2009-04-20 27 views
42

Quando accidentalmente clicco sulla scheda diagrammi di database, ottengo uno dei seguenti errori:Come cambio il proprietario di un database SQL Server?

gli oggetti di supporto diagramma di database non può essere installato perché questo database non ha un proprietario di valido. Per continuare, prima di utilizzare la pagina Files della finestra di dialogo Proprietà database o l'istruzione ALTER AUTORIZZAZIONE per impostare il proprietario del database per un account di accesso valido, quindi aggiungere gli oggetti di supporto del database schema .

--- --- o

Il database non ha una o più degli oggetti di supporto necessarie per utilizzare base di dati di diagrammi. Vuoi creare ?

Qual è la sintassi per cambiare il proprietario di questo database in "sa"?

+0

Non capisco il motivo per cui si pensa che questo abbia a che fare con il proprietario? Vuole solo sapere se dovrebbe creare gli oggetti per rendere possibili i diagrammi. –

+0

Se cambio il proprietario, non mi viene richiesto di creare gli oggetti. Non sono sicuro che vengano creati automaticamente in seguito. –

risposta

68

per cambiare il proprietario dell'oggetto provare la seguente

EXEC sp_changedbowner 'sa' 

che, tuttavia, non è il tuo problema, per vedere i diagrammi gli oggetti Tools Da Vinci devono essere creati (si vedrà tabelle e procs che iniziano con DT_) dopo che

+4

Come per BOL: questa funzionalità verrà rimossa in una versione futura di Microsoft SQL Server. Evitare l'uso di questa funzione in un nuovo lavoro di sviluppo e pianificare di modificare le applicazioni che attualmente utilizzano questa funzione. Utilizzare invece ALTER AUTHORIZATION. https://msdn.microsoft.com/en-us/library/ms178630(v=sql.110).aspx –

3

Questo è un prompt per creare un gruppo di oggetti, come sp_help_diagram (?), Che non esistono.

Questo non dovrebbe avere nulla a che fare con il proprietario del db.

+1

Puoi spiegare perché non sono più richiesto per questo dopo aver cambiato il proprietario? Gli oggetti vengono creati automaticamente o SQL Server smette di chiedermelo perché il mio account non è più il proprietario? –

+0

In questo caso, il DB era di proprietà dell'accesso che era stato eliminato. Non sono sicuro del perché perché "sa" possiede tutti i nostri database. – gbn

62

Per cambiare proprietario del database:

ALTER AUTHORIZATION ON DATABASE::YourDatabaseName TO sa 

come di SQL Server 2014 è ancora possibile utilizzare sp_changedbowner pure, anche se Microsoft ha promesso di rimuoverlo nella versione "futura" dopo SQL Server 2012. Tuttavia lo hanno rimosso da BOL di SQL Server 2014.

+2

@ lter - non sono sicuro di aver capito il tuo commento. La domanda era 'Qual è la sintassi per cambiare il proprietario di questo database in' sa '?'. Credo di aver risposto a questa domanda. Se si esegue questa dichiarazione, il proprietario del database verrà modificato in sa.Inoltre, si consiglia la sintassi da utilizzare come opposto rispetto all'utilizzo di sp_changedbowner meno recente che probabilmente andrà in pensione alla fine. –

0

Ecco un modo per cambiare il proprietario su ALL DBS (escluso Sistema)

EXEC sp_msforeachdb' 
USE [?] 
IF ''?'' <> ''master'' AND ''?'' <> ''model'' AND ''?'' <> ''msdb'' AND ''?'' <> ''tempdb'' 
BEGIN 
exec sp_changedbowner ''sa'' 
END 
' 
+1

Non utilizzare sp_msforeachdb a meno che non ti piacciano i database occasionalmente, questo è un problema documentato. – ConstantineK

Problemi correlati