it-swarm.com.de

Ändern Sie den Schemanamen der Tabelle in SQL

Ich möchte den Schemanamen der Tabelle Employees in der Datenbank ändern. In der aktuellen Tabelle ist Employees der Name des Datenbankschemas dbo. Ich möchte ihn in exe ändern. Wie kann ich es tun ? 

Beispiel:

VON 

dbo.Employees

ZU

exe.Employees

Ich habe 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 existiert oder Sie nicht habe die Erlaubnis.

Was habe ich verpasst? 

136
theChampion

Schema erstellen:

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
211
Pandian

Versuchen Sie es unten

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
ALTER SCHEMA NewSchema TRANSFER [OldSchema].[TableName]

Ich muss immer die Klammern verwenden, wenn ich die ALTER SCHEMA-Abfrage in SQL verwende, oder ich erhalte eine Fehlermeldung.

15
Lauren

Durch SSMS habe ich ein neues Schema erstellt durch:

  • Klicken Sie im Objekt-Explorer auf meinem Server auf den Ordner Sicherheit.
  • klicken Sie mit der rechten Maustaste auf Schemas 
  • Ausgewähltes "Neues Schema ..."
  • Benannte mein neues Schema (exe in Ihrem Fall)
  • Klicken Sie auf OK

Ich fand diesen Beitrag, um das Schema zu ändern, erhielt jedoch auch den gleichen Berechtigungsfehler, wenn er versuchte, auf das neue Schema zu wechseln. Ich habe mehrere Datenbanken in meinem SSMS aufgelistet, also habe ich gerade versucht, die Datenbank anzugeben, und es hat funktioniert: 

USE (yourservername)  
ALTER SCHEMA exe TRANSFER dbo.Employees 
5
Jason D.
CREATE SCHEMA exe AUTHORIZATION [dbo]
GO

ALTER SCHEMA exe
TRANSFER dbo.Employees
GO
3
Singh

Ihr Code lautet: 

FROM
 dbo.Employees
TO
 exe.Employees

Ich habe mit dieser Abfrage versucht.

ALTER SCHEMA exe TRANSFER dbo.Employees

Schreiben Sie einfach create schema exe und führen Sie es aus

3
user2599599
2
Chains

Seien Sie sehr vorsichtig beim Umbenennen von Objekten in SQL. Sie können dazu führen, dass Abhängigkeiten zum Scheitern verurteilt werden, wenn Sie das, was Sie tun, nicht vollständig erreichen können. Dies funktioniert jedoch leicht (zu sehr) für das Umbenennen von Dingen, vorausgesetzt, Sie haben richtigen Zugriff auf die Umgebung:

exec sp_rename 'Nameofobject', 'ReNameofobject'
0
djangojazz

Stellen Sie sicher, dass Sie sich in SSMS im richtigen Datenbankkontext befinden. Ich habe den gleichen Fehler wie Sie, aber ich wusste, dass das Schema bereits existierte. Ich wusste nicht, dass ich im MASTER-Kontext war. ALTER hat funktioniert, nachdem ich den Kontext in meine Datenbank geändert habe.

0
billmack30

Um ein neues Schema zu erstellen, folge den folgenden Schritten:

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.

Um ein Schema zu ändern, führe folgenden SQL-Befehl aus:

ALTER SCHEMA new_schema TRANSFER dbo.Employees

0
Tahir77667

Falls jemand nach einer niedrigeren Version sucht -

Für SQL Server 2000:

sp_changeobjectowner @objname = 'dbo.Employees', @newowner = 'exe' 

0
iravinandan