ALTER SCHEMA (Transact-SQL)
Trasferisce un'entità a protezione diretta da uno schema a un altro.
Convenzioni 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.
Attenzione: |
---|
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