Chcę zmienić nazwę schematu tabeli Employees
w bazie danych. W bieżącej tabeli Employees
nazwa schematu bazy danych to dbo
Chcę go zmienić na exe
. Jak mogę to zrobić ?
Przykład:
Z
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 uprawnień.
Co mnie ominęło?
sql
sql-server
tsql
schema
mistrz
źródło
źródło
create schema
: msdn.microsoft.com/en-US/library/ms189462%28v=sql.90%29.aspxOdpowiedzi:
Utwórz schemat:
ALTER Schemat:
źródło
sys.schemas
to tabela zawierająca wszystkie schematy bazy danych. Exec ('...') po prostu uruchamia dynamiczne wywołanie SQL, w tym przypadku jest to potrzebne, ponieważ polecenie CREATE SCHEMA musi być pierwszą instrukcją w partii zapytania i wykonywać je tak, jak zapewnia to dynamiczny SQL.Spróbuj poniżej
źródło
set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @table
aby upewnić się, że niektóre specjalne słowa / znaki nie powodują błędów.Zawsze muszę używać nawiasów, gdy używam
ALTER SCHEMA
zapytania w SQL lub otrzymuję komunikat o błędzie.źródło
Poprzez SSMS stworzyłem nowy schemat przez:
Znalazłem ten post, aby zmienić schemat, ale otrzymywałem również ten sam błąd uprawnień podczas próby przejścia na nowy schemat. Mam kilka baz danych wymienionych w moim SSMS, więc właśnie spróbowałem określić bazę danych i zadziałało:
źródło
Twój kod to:
Próbowałem z tym zapytaniem.
Po prostu napisz
create schema exe
i wykonajźródło
źródło
Sprawdź MSDN ...
CREATE SCHEMA
: http://msdn.microsoft.com/en-us/library/ms189462.aspxNastępnie
ALTER SCHEMA
: http://msdn.microsoft.com/en-us/library/ms173423.aspxLub możesz to sprawdzić na SO ...
Jak przenieść tabelę do schematu w T-SQL
źródło
Bądź bardzo ostrożny podczas zmieniania nazw obiektów w sql. Możesz spowodować, że zależności zawodzą, jeśli nie jesteś całkowicie wolny od tego, co robisz. Powiedziawszy, że działa to łatwo (zbyt mocno) w przypadku zmiany nazw rzeczy, pod warunkiem, że masz odpowiedni dostęp do środowiska:
źródło
exec sp_rename 'dbo.Employees', 'exe.Employees'
, dostałbyś nazwę [dbo]. [Exe. Pracownicy]Upewnij się, że jesteś we właściwym kontekście bazy danych w programie SSMS. Mam ten sam błąd co Ty, ale wiedziałem, że schemat już istnieje. Nie zdawałem sobie sprawy, że jestem w kontekście „MASTER”. ALTER działał po zmianie kontekstu na moją bazę danych.
źródło
W przypadku, gdy ktoś szuka niższej wersji -
W przypadku programu SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess', @newowner = 'exe'
źródło