Condividi tramite


sp_changeobjectowner (Transact-SQL)

Si applica a: SQL Server

Modifica il proprietario di un oggetto del database corrente.

Importante

Questa stored procedure funziona solo con gli oggetti disponibili in SQL Server 2000 (8.x). Questa funzionalità verrà rimossa nelle versioni future di SQL Server. Evitare di usare questa funzionalità in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Usare invece ALTER SCHEMA o ALTER AUTHORIZATION . sp_changeobjectowner modifica sia lo schema che il proprietario. Per mantenere la compatibilità con le versioni precedenti di SQL Server, questa stored procedure modificherà solo i proprietari degli oggetti quando sia il proprietario corrente che i nuovi schemi proprietari hanno lo stesso nome dei nomi utente del database.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_changeobjectowner
    [ @objname = ] N'objname'
    , [ @newowner = ] N'newowner'
[ ; ]

Argomenti

[ @objname = ] N'objname'

@objname è nvarchar(776), senza impostazione predefinita.

Nome di una tabella, di una vista, di una funzione definita dall'utente o di una stored procedure esistente nel database corrente. @objname è un valore nvarchar(776), senza impostazione predefinita. @objname può essere qualificato con il proprietario dell'oggetto esistente, nel formato <existing_owner>.<object_name> se lo schema e il relativo proprietario hanno lo stesso nome.

[ @newowner = ] N'newowner'

Nome dell'account di sicurezza che sarà il nuovo proprietario dell'oggetto. @newowner è sysname, senza impostazione predefinita. @newowner deve essere un utente del database valido, un ruolo del server, un utente di Windows o un gruppo di Windows con accesso al database corrente. Se il nuovo proprietario è un utente di Windows o un gruppo di Windows per cui non esiste un'entità di sicurezza a livello di database corrispondente, viene creato un utente del database.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_changeobjectowner rimuove tutte le autorizzazioni esistenti dall'oggetto . Sarà necessario riapplicare le autorizzazioni che si desidera mantenere dopo l'esecuzione sp_changeobjectownerdi . È pertanto consigliabile creare uno script per le autorizzazioni esistenti prima di eseguire sp_changeobjectowner. Dopo la modifica della proprietà dell'oggetto, è possibile usare lo script per riapplicare le autorizzazioni. È prima necessario modificare il proprietario dell'oggetto nello script.

Per modificare il proprietario di un'entità a protezione diretta, usare ALTER AUTHORIZATION. Per modificare uno schema, usare ALTER SCHEMA.

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del database db_owner o l'appartenenza sia al ruolo predefinito del database db_ddladmin che al ruolo predefinito del database db_securityadmin nonché CONTROL all'autorizzazione per l'oggetto .

Esempi

Nell'esempio seguente viene modificato il proprietario della tabella authors in Corporate\GeorgeW.

EXEC sp_changeobjectowner 'authors', 'Corporate\GeorgeW';
GO