Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Das Schema kann nicht gelöscht werden, da es nicht vorhanden ist oder Sie keine Berechtigung haben. - SQL Server / TSQL-Tutorial Teil 29

Szenario:

Sie arbeiten für Mortgage Company als SQL Server-Entwickler. Sie haben diese Anforderung erfüllt, um ein SQL-Skript zum Löschen des Schemas vorzubereiten. Sie verwenden
Drop Schema SchemeName
Anweisung in Entwicklung SQL Server-Instanz und untenstehender Fehler.

Das Schema '' kann nicht gelöscht werden, da es nicht existiert oder Sie keine Berechtigung haben.

Was wären Ihre nächsten Schritte?

Lösung:

Es könnte mehrere Gründe für den obigen Fehler geben. Erstens haben Sie wirklich keine Berechtigung, das Schema zu löschen. Sie haben sich bei DBA erkundigt und er hat bestätigt, dass Sie alle Berechtigungen haben, um diese Änderung vorzunehmen. Jetzt haben Sie sich das genauer angesehen und festgestellt, dass es Objekte wie Tabellen, Ansichten usw. gibt, die dieses Schema verwenden.
Von hier aus können Sie zwei Lösungen vorschlagen.
1) Löschen Sie alle Objekte Related to Schema und löschen Sie das Schema (Es könnte Szenarien geben, in denen jemand dieses Schema und diese Objekte verwendet hat. Jetzt muss niemand mehr das Schema und die damit verbundenen Objekte verwenden. Sie werden also mit Ihrem Team diskutieren und, wenn sie sagen, dass Sie das Drop-Skript für Objekte und Schemas vorbereiten. Sie kann Objekt-Explorer-Detailfenster verwenden, um Skripts zum Ablegen von Objekten zu generieren.
2) Sie möchten die Objekte behalten und in ein anderes Schema verschieben. Vielleicht dbo oder ein neues Schema. Nach der Übertragung die Objekte, die Sie löschen möchten.
Die folgende Abfrage kann verwendet werden, um ein Skript zum Übertragen von Objekten zu generieren.
Declare @SourceSchema VARCHAR(100)
Declare @DestinationSchema VARCHAR(100)
SET @SourceSchema='TB'
SET @DestinationSchema='dbo'
Select 'Alter Schema ['+@DestinationSchema+'] Transfer '+@SourceSchema+'.['+name+']' 
from sys.objects
where schema_name(schema_id)=@SourceSchema
 
 
 Kopieren Sie die generierten Skripte und führen Sie sie dann in einer Datenbank aus. Sobald Sie fertig sind, können Sie das Schema jetzt mit Drop Schema SchemaName löschen Erklärung.