2009-12-18 11 views
5

Sto cercando di eliminare lo schema di un utente da un database e sto ottenendo il seguente errore:errore cercando di eliminare l'account del database schema utente

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

Qual è il getRoles oggetto?

Come si elimina il riferimento in modo da poter rimuovere il vecchio account utente?

+0

Qual è il comando che sta causando questo errore? Inoltre, ogni utente ha il proprio schema ?! Sicuramente frainteso. –

+0

Sto cercando di eliminare l'utente e per farlo mi chiede se voglio anche eliminare lo schema. Tutto quello che sto facendo per ottenere questo è fare clic destro su utente, fare clic su Elimina. – Jason

+1

È necessario acquisire familiarità con i comandi DDL utilizzati per elaborare tali operazioni. Tutta la GUI non nasconde queste informazioni da te e rende più difficile per te decifrare cosa non va. La maggior parte delle finestre di dialogo in SSMS ti consente di fare clic su un pulsante di script nella parte superiore, e questo è un modo rapido per imparare il DDL per cose che potresti normalmente fare affidamento sulla GUI (e dovrebbe fornire maggiori informazioni su ciò che accade quando ottieni questi messaggio di errore). –

risposta

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

Poi fare:

DROP <object type> ext_owner.getroles; 

--o

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

Probabilmente dovrai ripeterlo un po 'di volte. Non è possibile eliminare uno schema che non è vuoto.

+0

Non compare nulla quando eseguo la rappresentazione. Non riesco a eliminare lo schema 'bob222' perché viene referenziato dall'oggetto 'LanguagePackImport' –

2

È possibile interrogare lo system table sys.objects per cercare ulteriori informazioni su quali getroles potrebbero essere.

Prova

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

Questo dovrebbe darvi alcune informazioni su ciò che l'oggetto è. A quel punto è possibile rilasciarlo o decidere di cambiare lo schema in modo che non sia più referenziato.

2

Prova con:

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

La mia ipotesi è che si tratta di una procedura di funzione o memorizzato che l'utente ha creato sotto il proprio schema (forse accidentalmente cadere (se non è in uso) e si dovrebbe essere. . buona per andare

Problemi correlati