2009-12-18 3 views
5

Ich versuche, einen Benutzer Schema aus einer Datenbank zu löschen und ich erhalte die folgende Fehlermeldung löschen:Fehler beim Datenbankbenutzerkonto Schema

TITLE: Microsoft SQL Server Management Studio 
------------------------------ 

Drop failed for Schema 'ext_owner'. (Microsoft.SqlServer.Smo) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=9.00.4035.00&EvtSrc=Microsoft.SqlServer.Management.Smo.ExceptionTemplates.FailedOperationExceptionText&EvtID=Drop+Schema&LinkId=20476 

------------------------------ 
ADDITIONAL INFORMATION: 

An exception occurred while executing a Transact-SQL statement or batch. (Microsoft.SqlServer.ConnectionInfo) 

------------------------------ 

Cannot drop schema 'ext_owner' because it is being referenced by object 'getroles'. (Microsoft SQL Server, Error: 3729) 

For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=09.00.4035&EvtSrc=MSSQLServer&EvtID=3729&LinkId=20476 

------------------------------ 
BUTTONS: 

OK 
------------------------------ 

Was ist die GetRoles Objekt?

Wie kann ich die Referenz loswerden, damit ich das alte Benutzerkonto entfernen kann?

+0

Was ist der Befehl, der diesen Fehler verursacht? Außerdem hat jeder Benutzer sein eigenes Schema ?! Sicher verstehe ich das falsch. –

+0

Ich versuche, den Benutzer zu löschen und zu tun, dass es fragt, ob ich auch das Schema löschen möchte. Alles, was ich tue, um das zu bekommen, ist Rechtsklick auf den Benutzer, klicken Sie auf Löschen. – Jason

+1

Sie sollten sich mit den DDL-Befehlen vertraut machen, die zur Verarbeitung solcher Operationen verwendet werden. Die gesamte GUI versteckt diese Informationen vor Ihnen und erschwert es Ihnen zu entziffern, was falsch läuft. Die meisten Dialoge in SSMS erlauben es Ihnen, oben auf eine Skriptschaltfläche zu klicken, und dies ist eine schnelle Möglichkeit, die DDL für Dinge zu lernen, für die Sie normalerweise auf die GUI angewiesen sind (und mehr Einblick darüber geben sollten, was passiert, wenn Sie diese erhalten Fehlermeldungen). –

Antwort

7
SELECT * FROM sys.objects 
WHERE name = 'getroles' 
AND schema_id = SCHEMA_ID('ext_owner'); 

Dann tun:

DROP <object type> ext_owner.getroles; 

--oder

ALTER SCHEMA <some other schema> TRANSFER ext_owner.getroles; 

Sie werden dies wahrscheinlich einige Male wiederholen müssen. Sie können ein Schema nicht löschen, das nicht leer ist.

+0

Nichts erscheint, wenn ich die Anweisung ausführen. Ich kann das Schema 'bob222' nicht löschen, weil es vom Objekt 'LanguagePackImport' referenziert wird –

2

Sie können die system table sys.objects abfragen, um zu versuchen, mehr Informationen darüber zu finden, welche Regelkreise sein könnten.

Versuchen

SELECT * FROM sys.objects WHERE name LIKE '%getroles%' 

Diese sollten Sie auf einige Informationen geben, was das Objekt ist. An diesem Punkt können Sie es entweder löschen oder das Schema so ändern, dass es nicht mehr referenziert wird. mit

2

Versuchen:

SELECT * FROM sys.objects WHERE name = 'getroles' 

Meine Vermutung ist, dass es eine Funktion oder eine gespeicherte Prozedur, die der Benutzer (möglicherweise versehentlich unter ihrem eigenen Schema erstellt Drop it (wenn es nicht verwendet wird) und Sie sollten. . gut gehen

Verwandte Themen