Modificare l'owner delle tabelle di un database su SQL Server


Vediamo un semplice script per generare l'sql per modificare l'owner di tutte le tabelle di un database in SQL Server. Alcune volte mi è capitato di dover lavorare su database non progettati da me ed in qualche caso le tabelle avevano un owner diverso dal classico dbo. Anzi ho trovato più di un owner nello stesso database.

In questi casi, a meno di non avere particolari vincoli sulla sicurezza, è più comodo riportare tutte le tabelle sotto lo stesso proprietario.

Il comando TSQL per farlo è l'ALTER SCHEMA, che però andrebbe scritto per ogni tabella nel database. Per evitare un lungo e noioso lavoro amanuense, possiamo farci aiutare dall'SQL.

SELECT 'ALTER SCHEMA dbo TRANSFER ' + s.Name + '.' + o.Name FROM sys.objects o INNER JOIN sys.Schemas s on o.schema_id = s.schema_id WHERE s.Name = 'NomeDatabase'


Dove nel codice c'è scritto NomeDatabase dovete mettere il nome del database su cui volete cambiare l'owner.
Questa query non esegue l'azione di modificare l'owner, bensì generara l'sql da eseguire per effettuare la modifica.
Copiandolo ed eseguendolo, otteniamo l'effetto desiderato.

Post correlati: