Condividi tramite


ALTER SCHEMA (Transact-SQL)

Trasferisce un'entità a protezione diretta da uno schema a un altro.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

ALTER SCHEMA schema_name TRANSFER securable_name

Argomenti

  • schema_name
    Nome di uno schema nel database corrente in cui verrà spostata l'entità a protezione diretta. Non può essere SYS o INFORMATION_SCHEMA.
  • securable_name
    Nome composto da una o due parti di un'entità a protezione diretta inclusa nello schema da spostare nello schema.

Osservazioni

In SQL Server 2005 utenti e schemi sono completamente distinti. Per ulteriori informazioni, vedere Separazione fra schema e utente.

È possibile utilizzare ALTER SCHEMA solo per spostare le entità a protezione diretta tra schemi presenti nello stesso database. Per modificare o eliminare un'entità a protezione diretta all'interno di uno schema, utilizzare l'istruzione ALTER o DROP specifica dell'entità a protezione diretta desiderata.

Se per securable_name viene utilizzato un nome composto da una parte, verranno utilizzate le regole di risoluzione dei nomi valide per individuare l'entità a protezione diretta.

Tutte le autorizzazioni associate all'entità a protezione diretta vengono eliminate quando l'entità viene spostata nel nuovo schema. Se è stato impostato in modo esplicito, il proprietario dell'entità a protezione diretta rimarrà invariato. Se è stato impostato su SCHEMA OWNER, il proprietario dell'entità a protezione diretta rimarrà SCHEMA OWNER. Tuttavia, in seguito allo spostamento SCHEMA OWNER verrà risolto nel nome del proprietario del nuovo schema. Il valore di principal_id del nuovo proprietario sarà NULL.

ms173423.Caution(it-it,SQL.90).gifAttenzione:
Il funzionamento degli schemi in SQL Server 2005 è diverso rispetto alle versioni precedenti di SQL Server. È possibile che il codice in cui gli schemi sono equivalenti agli utenti del database non restituisca risultati corretti. Non utilizzare le viste del catalogo delle versioni precedenti, inclusa sysobjects, nei database in cui sia già stata utilizzata una delle istruzioni DLL seguenti: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. In questi database è necessario utilizzare le nuove viste del catalogo, in cui si tiene conto della separazione tra entità e schemi introdotta in SQL Server 2005. Per ulteriori informazioni sulle viste del catalogo, vedere Viste del catalogo (Transact-SQL).

Autorizzazioni

Per trasferire un'entità a protezione diretta da un altro schema, l'utente deve disporre dell'autorizzazione CONTROL per l'entità (non per lo schema) e dell'autorizzazione ALTER per lo schema di destinazione.

Se l'entità a protezione diretta è associata a una specifica dell'istruzione EXECUTE AS OWNER e il proprietario è impostato su SCHEMA OWNER, l'utente deve inoltre disporre dell'autorizzazione IMPERSONATION per il proprietario dello schema di destinazione.

Tutte le autorizzazioni associate all'entità a protezione diretta in fase di trasferimento vengono eliminate al momento dello spostamento.

Esempi

Nell'esempio seguente viene modificato lo schema HumanResources mediante il trasferimento nello schema della tabella Address dallo schema Person.

USE AdventureWorks;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO

Vedere anche

Riferimento

CREATE SCHEMA (Transact-SQL)
DROP SCHEMA (Transact-SQL)
EVENTDATA (Transact-SQL)

Altre risorse

Separazione fra schema e utente

Guida in linea e informazioni

Assistenza su SQL Server 2005