Ich möchte den Schemanamen der Tabelle Employees
in der Datenbank ändern . In der aktuellen Tabellendatenbank Employees
lautet der Schemaname, den dbo
ich ändern möchte exe
. Wie kann ich es tun ?
Beispiel:
VON
dbo.Employees
ZU
exe.Employees
Ich habe es mit dieser Abfrage versucht:
ALTER SCHEMA exe TRANSFER dbo.Employees
Aber das gibt mir einen Fehler:
Das Schema 'exe' kann nicht geändert werden, da es nicht vorhanden ist oder Sie keine Berechtigung haben.
Was habe ich verpasst?
sql
sql-server
tsql
schema
der Meister
quelle
quelle
create schema
Antworten:
Schema erstellen:
ALTER-Schema:
quelle
sys.schemas
ist eine Tabelle, die alle Schemas für die Datenbank enthält. Der Exec ('...') führt nur einen dynamischen SQL-Aufruf aus. In diesem Fall ist dies erforderlich, da ein CREATE SCHEMA-Befehl die erste Anweisung in einem Abfragebatch sein muss und die Ausführung als dynamisches SQL dies ermöglicht.Versuchen Sie es unten
quelle
set @sql = 'alter schema [' + @newschema + '] transfer [' + @oldschema + '].' + @table
sicherstellen, dass einige spezielle Wörter / Zeichen keinen Fehler verursachen.Ich muss immer die Klammern verwenden, wenn ich die
ALTER SCHEMA
Abfrage in SQL verwende, oder ich erhalte eine Fehlermeldung.quelle
Über SSMS habe ich ein neues Schema erstellt von:
Ich habe festgestellt, dass dieser Beitrag das Schema ändert, aber beim Versuch, auf das neue Schema zu wechseln, wurde der gleiche Berechtigungsfehler angezeigt. Ich habe mehrere Datenbanken in meinem SSMS aufgelistet, also habe ich nur versucht, die Datenbank anzugeben, und es hat funktioniert:
quelle
Ihr Code lautet:
Ich habe es mit dieser Abfrage versucht.
Einfach schreiben
create schema exe
und ausführenquelle
quelle
Schauen Sie sich MSDN an ...
CREATE SCHEMA
: http://msdn.microsoft.com/en-us/library/ms189462.aspxDann
ALTER SCHEMA
: http://msdn.microsoft.com/en-us/library/ms173423.aspxOder Sie können es auf SO überprüfen ...
Wie verschiebe ich eine Tabelle in ein Schema in T-SQL?
quelle
Seien Sie sehr, sehr vorsichtig, wenn Sie Objekte in SQL umbenennen. Sie können dazu führen, dass Abhängigkeiten fehlschlagen, wenn Sie nicht vollständig mit dem, was Sie tun, vertraut sind. Allerdings funktioniert dies leicht (zu sehr), um Dinge umzubenennen, vorausgesetzt, Sie haben Zugriff auf die Umgebung:
quelle
exec sp_rename 'dbo.Employees', 'exe.Employees'
würden, würden Sie den Namen [dbo] erhalten. [Exe.Employees]Stellen Sie sicher, dass Sie sich in SSMS im richtigen Datenbankkontext befinden. Ich habe den gleichen Fehler wie Sie erhalten, aber ich wusste, dass das Schema bereits vorhanden ist. Ich wusste nicht, dass ich mich im 'MASTER'-Kontext befinde. ALTER hat funktioniert, nachdem ich den Kontext in meine Datenbank geändert habe.
quelle
Für den Fall, dass jemand nach einer niedrigeren Version sucht -
Für SQL Server 2000:
sp_changeobjectowner @objname = 'dbo.Employess', @newowner = 'exe'
quelle