sp_changeobjectowner (Transact-SQL)

Modifica il proprietario di un oggetto del database corrente.

Nota importanteImportante

Questa stored procedure funziona solo con gli oggetti disponibili in Microsoft SQL Server 2000. Questa caratteristica verrà rimossa a partire da una delle prossime versioni di Microsoft SQL Server. Evitare di utilizzare questa caratteristica in un nuovo progetto di sviluppo e prevedere interventi di modifica nelle applicazioni in cui è attualmente implementata. Utilizzare ALTER SCHEMA o ALTER AUTHORIZATION in alternativa. La stored procedure sp_changeobjectowner modifica sia lo schema che il proprietario. Per mantenere la compatibilità con le versioni precedenti di SQL Server, questa stored procedure modifica i proprietari degli oggetti solo quando sia il proprietario corrente che il nuovo proprietario possiedono schemi il cui nome corrisponde al relativo nome utente di database.

Nota importanteImportante

A questa stored procedure è stato aggiunto un nuovo requisito di autorizzazione.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_changeobjectowner [ @objname = ] 'object' , [ @newowner = ] 'owner'

Argomenti

  • [ @objname = ] 'object'
    Nome di una tabella, vista, funzione definita dall'utente o stored procedure esistente nel database corrente.object è di tiponvarchar(776) e non prevede alcun valore predefinito. object può essere qualificato con il nome del proprietario dell'oggetto esistente nella forma existing_owner**.**object se lo schema e il relativo proprietario hanno lo stesso nome.

  • [ @newowner=] **'**owner '
    Nome dell'account di protezione che rappresenta il nuovo proprietario dell'oggetto. owner è di tipo sysname e non prevede alcun valore predefinito. owner deve corrispondere a un utente di database, un ruolo di server, un account di accesso di Microsoft Windows o un gruppo di Windows valido con accesso al database corrente. Se il nuovo proprietario è un utente di Windows o un gruppo di Windows per cui non esiste un'entità corrispondente a livello di database, verrà creato un utente di database.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

sp_changeobjectowner rimuove tutte le autorizzazioni esistenti dall'oggetto. Dopo aver eseguito la stored procedure sp_changeobjectowner è necessario riapplicare le autorizzazioni che si desidera conservare. Prima di eseguire sp_changeobjectowner, è pertanto consigliabile includere le autorizzazioni esistenti in uno script. Dopo avere modificato il proprietario dell'oggetto, è possibile eseguire lo script per riapplicare le autorizzazioni. È prima necessario modificare il proprietario dell'oggetto nello script. Per ulteriori informazioni sulla creazione di script di database, vedere Documentazione di database mediante la creazione di script.

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

Autorizzazioni

È richiesta l'appartenenza al ruolo predefinito del database db_owner, o l'appartenenza a entrambi i ruoli predefiniti del database db_ddladmin e db_securityadmin, nonché l'autorizzazione CONTROL per l'oggetto.

Esempi

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

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