2009-05-14 19 views
12

Ho bisogno di cambiare il proprietario di un diagramma di database in SQL Server 2005. Attualmente è di proprietà di me (dominio \ nomeutente.diagramName) e vorrei cambiarlo per essere di proprietà da dbo (dbo.diagramName). Ho pensato che potrei usare sp_changeobjectowner, ma credo che sia solo per le tabelle, le stored procedure, ecc ... Penso che sia abbastanza semplice, non sono stato in grado di trovare nulla attraverso una ricerca su google.Cambia proprietario del diagramma del database in SQL Server 2005

risposta

17

Alla fine, ho dovuto togliere tale schema utenti quindi eseguire il seguente aggiornamento ...

-- to identify the diagram id, name, & owner 

select * 
from dbo.sysdiagrams 


-- to manually change the owner of a diagram 
-- note: i derived that the principal_id =1 for dbo from above query 

update 
dbo.sysdiagrams set principal_id =1 where diagram_id = 1 

Ho finito per ottenere l'aiuto di cui avevo bisogno di un DBA qui nel campus.

+0

Come si può vedere eseguendo 'SELECT * FROM sys.database_principals',' principal_id' numero 1 è il principal 'dbo'. Immagino che si possa anche considerare 'principal_id' 0, che è pubblico. – jpmc26

2

In questo articolo si dichiara che sarà necessario rimuovere te stesso come utente del db. Lo apri con l'utente che preferisci.

http://msdn.microsoft.com/en-us/library/ms171972(VS.80).aspx

+0

Quando si tenta di eliminare l'utente, viene visualizzato ... TITOLO: Microsoft SQL Server Management Studio Errore durante l'eliminazione di 'dominio \ nome utente' utente. (Microsoft.SqlServer.Smo) Per informazioni, cliccare: http://bit.ly/gHA9 INFORMAZIONI SUPPLEMENTARI: verificata un'eccezione durante l'esecuzione di un'istruzione Transact-SQL o batch. (Microsoft.SqlServer.ConnectionInfo) L'entità di database è proprietaria di uno schema nel database e non può essere eliminata. (Microsoft SQL Server, Errore: 15138) Per assistenza, fare clic su: http://bit.ly/2lzKpz – Jason

+0

Immagino che ci sia uno schema chiamato 'jason' che ti servirà per cambiare oggetto da quello schema ad esso. http://msdn.microsoft.com/en-us/library/ms173423.aspx –

+0

Ho rimosso lo schema ed è stato in grado di rimuovere l'utente. Quando sono tornato al diagramma, il proprietario è stato cambiato in pubblico. Non è ancora quello che voglio. Altri suggerimenti? – Jason

0

Anche se non avrebbe aiutato in questo caso (perché semplicemente ricrea l'intero sysdiagrams fila), questi script

ScriptDiagram2005 o ScriptDiagram2008

ti permettono di creare uno script INSERT di il contenuto dei diagrammi, da eseguire nuovamente sul database di origine (o un backup, una copia codificata o qualsiasi altra cosa). Potresti facilmente (sapendo cosa sai ora di principal_id) ricreare il diagramma con un nuovo proprietario.

Basta trovare e modificare il resto di questa affermazione nello script

INSERT INTO sysdiagrams ([name], [principal_id], [version], [definition]) 

il vero vantaggio è essere in grado di reperirlo-controllo/backup del file di testo ...

14
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

Impostare un Clausola WHERE se necessario. Il testo sopra suggerisce che è necessario rimuovere l'utente dal database, ma non ho dovuto farlo. Sto usando SQL2008 R2.

5
USE [db_name] 
UPDATE dbo.sysdiagrams 
SET principal_id = 1 

se sopra dichiarazione non funziona, si può prendere una modifica su questo tavolo con tasto destro del mouse sulle dbo.sysdiagrams e selezionare Edit top 200 righe, quindi è possibile impostare colonna principal_id per tutti i record impostati manualmente a 1

+0

Il metodo no sql ha funzionato per me. All'inizio non capivo bene cosa intendessi @hamed aj ma sì, per essere più esplicito, in System Tables, fai clic su dbo.sysdiagrams e scegli di modificare le prime 200 righe. Nella tabella che viene visualizzata, è sufficiente trovare la riga che definisce il diagramma di interesse e modificare il valore in principal_id in 1. Andare a rinfrescare l'elenco dei diagrammi e lo si vedrà aggiornare a dbo come proprietario. –

Problemi correlati