L'entità database possiede uno schema nel database e non può essere eliminato dal messaggio


28

Sto cercando di eliminare un'entità dal database ma non ci riesco perché possiede uno schema. Quando vado a modificare l'utente, tuttavia, la casella per deselezionare lo schema è blu e inamovibile. Come posso rimuovere il principale da questi schemi?

Risposte:


31

Prova T-SQL per fare questo:

alter authorization
on schema::YourSchemaName
to dbo
go

drop user TheUserYouWantToDelete
go

Non puoi rilasciare un'entità che è un proprietario dello schema, quindi le ALTER AUTHORZATIONmodifiche allo schema di proprietà (l'ho usato YourSchemaName, ma ovviamente lo sostituisco con lo schema di proprietà nel tuo database) in dbo(allo stesso modo, puoi cambiare la proprietà a qualsiasi entità di cui hai bisogno nel tuo ambiente). Ciò ti consentirà di eliminare l'utente che possiede lo schema in precedenza (ad esempio gli scopi che ho usato TheUserYouWantToDelete, ma che ora sarà il non proprietario che desideri eliminare).


Va bene, quindi ha funzionato. Sono un po 'confuso sul perché, comunque. Perché devo autorizzare lo schema su un altro schema? Forse ho bisogno di rivedere gli schemi ...
Incredibilmente il

1
@rsteckly Semplificato, autorizzazione = proprietà. Se si potesse eliminare l'utente proprietario dello schema, lo schema non sarebbe valido, poiché il proprietario non esiste più. Immagina di poter eliminare un cliente che ha effettuato un ordine. Cosa significa l'ID cliente nella tabella Ordini se non esiste più un cliente a cui punta? Dove devo spedire l'ordine?
Aaron Bertrand

Spiacenti, il mio esempio non è stato ben spiegato. Non stiamo cambiando l'autorizzazione allo dboschema, stiamo cambiando l'autorizzazione al dboprincipale. Quello avrebbe potuto essere qualsiasi principale del database.
Thomas Stringer,

30

Il modo T-SQL funziona. Grazie a http://zarez.net/?p=179 ho trovato il modo SSMS per farlo (UI).

Per modificare il proprietario dello schema da SQL Server Management Studio:

Expand your database -> Security -> Schemas

Nei dettagli di Esplora oggetti puoi vedere un elenco degli schemi e dei proprietari:

inserisci qui la descrizione dell'immagine

Se non conosci gli schemi di proprietà dell'utente, controlla le proprietà dell'utente.

inserisci qui la descrizione dell'immagine

Apri le proprietà dello schema di proprietà dell'utente e fai clic su "Cerca" per trovare un nuovo proprietario. Se non conosci il nuovo proprietario, puoi "Sfoglia" per uno.

Properites -> Search -> Browse

e puoi cambiare il proprietario dello schema in dbo (o chiunque sia il più appropriato).

inserisci qui la descrizione dell'immagine


1
Il modo T-SQL è molto migliore e flessibile. Farlo attraverso la GUI ha (è) sempre un dolore!
Kin Shah,

Sono tutto per il modo T-SQL, anche perché può essere utilizzato negli script.
woodvi,

2
Nota: F7 è il collegamento per visualizzare i dettagli se non viene visualizzato
Simon_Weaver
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.