Zmiana nazwy schematu tabeli w SQL

Chcę zmienić nazwę schematu tabeli Employees w bazie danych. W bieżącej tabeli Employees nazwa schematu bazy danych to {[5] } chcę zmienić go na exe. Jak mogę to zrobić ?

Przykład:

Od

dbo.Employees

Do

exe.Employees

Próbowałem z tym zapytaniem:

ALTER SCHEMA exe TRANSFER dbo.Employees

Ale to daje mi błąd:

Nie można zmienić schematu 'exe', ponieważ nie istnieje lub nie masz pozwolenie.

Co mnie ominęło?
Author: AHiggins, 2013-03-18

10 answers

Utwórz Schemat:

IF (NOT EXISTS (SELECT * FROM sys.schemas WHERE name = 'exe')) 
BEGIN
    EXEC ('CREATE SCHEMA [exe] AUTHORIZATION [dbo]')
END

ALTER Schema:

ALTER SCHEMA exe 
    TRANSFER dbo.Employees
 195
Author: Pandian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-10 19:02:45

Spróbuj poniżej

declare @sql varchar(8000), @table varchar(1000), @oldschema varchar(1000), @newschema   varchar(1000)

  set @oldschema = 'dbo'
  set @newschema = 'exe'

 while exists(select * from sys.tables where schema_name(schema_id) = @oldschema)

  begin
      select @table = name from sys.tables 
      where object_id in(select min(object_id) from sys.tables where  schema_name(schema_id)  = @oldschema)

    set @sql = 'alter schema ' + @newschema + ' transfer ' + @oldschema + '.' + @table

   exec(@sql)
 end
 21
Author: DevelopmentIsMyPassion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-18 17:20:13
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

Zawsze muszę używać nawiasów, gdy używam zapytania ALTER SCHEMA w SQL, lub otrzymuję komunikat o błędzie.

 14
Author: Lauren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-25 20:25:16

Poprzez SSMS utworzyłem nowy schemat przez:

  • kliknięcie folderu zabezpieczenia w Eksploratorze obiektów na moim serwerze,
  • Schematy klikane prawym przyciskiem myszy
  • Wybrano " Nowy Schemat..."
  • nazwałem mój nowy schemat (exe w Twoim przypadku)
  • Hit OK

Znalazłem ten post, aby zmienić schemat, ale był również uzyskanie tego samego błędu uprawnień podczas próby zmiany do nowego schematu. Mam kilka baz danych wymienionych w moim SSMS, więc po prostu próbowałem określić bazę danych i zadziałało:

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
 4
Author: Jason D.,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-15 22:47:05

Twój kod to:

FROM
 dbo.Employees
TO
 exe.Employees
Próbowałem z tym zapytaniem.
ALTER SCHEMA exe TRANSFER dbo.Employees

Wystarczy napisać create schema exe i wykonać

 3
Author: user2599599,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-08 11:51:14
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO

Po Więcej Szczegółów Kliknij tutaj

 3
Author: Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-02 05:59:19
 2
Author: Chains,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:31

Bądź bardzo ostrożny zmieniając nazwy obiektów w sql. Możesz spowodować niepowodzenie zależności, Jeśli nie jesteś w pełni z tego, co robisz. Powiedziawszy, że to działa łatwo (za bardzo) do zmiany nazw rzeczy pod warunkiem, że masz dostęp właściwy na środowisku: {]}

exec sp_rename 'Nameofobject', 'ReNameofobject'
 0
Author: djangojazz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-18 17:17:31

Upewnij się, że jesteś we właściwym kontekście bazy danych w SSMS. Mam ten sam błąd co ty, ale wiedziałem, że schemat już istnieje. Nie wiedziałem, że jestem w "mistrzowskim" kontekście. ALTER działał po zmianie kontekstu do mojej bazy danych.

 0
Author: billmack30,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-03 18:55:38

aby utworzyć nowy schemat, wykonaj poniższe kroki:

1. Open your Database. 2. Route to Security folder. 3. Inside it is a folder named Schema. 4. Right click the schema folder> New Schema. 5. Add a Schema > Click OK.

aby zmienić schemat, uruchom następujące polecenie sql:

ALTER SCHEMA new_schema TRANSFER dbo.Employees

 0
Author: Tahir77667,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-05-11 10:08:54