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.