ALTER SCHEMA (Transact-SQL)
Transfiere un asegurable entre esquemas.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ALTER SCHEMA schema_name TRANSFER securable_name
Argumentos
- schema_name
Es el nombre de un esquema de la base de datos actual, al que se moverá el asegurable. No puede ser SYS ni INFORMATION_SCHEMA.
- securable_name
Es el nombre de una o dos partes de un asegurable del esquema que se va a mover al esquema.
Notas
En SQL Server 2005, los usuarios y los esquemas son completamente independientes. Para obtener más información, vea Separación de esquemas de usuario.
ALTER SCHEMA sólo se puede utilizar para mover asegurables entre esquemas de la misma base de datos. Para cambiar o quitar un asegurable de un esquema, use la instrucción ALTER o DROP específica para ese asegurable.
Si se usa un nombre de una parte para securable_name, se usarán las reglas de resolución de nombres actualmente vigentes para localizar el asegurable.
Todos los permisos asociados al asegurable se quitarán cuando se mueva el asegurable al nuevo esquema. Si el propietario del asegurable se ha establecido de forma explícita, el propietario no cambiará. Si el propietario del asegurable se ha establecido en SCHEMA OWNER, el propietario seguirá siendo SCHEMA OWNER; no obstante, después del traslado, SCHEMA OWNER se resolverá al propietario del nuevo esquema. El principal_id del nuevo propietario será NULL.
Advertencia: |
---|
En SQL Server 2005 el comportamiento de los esquemas es distinto al de las versiones anteriores de SQL Server. Si en el código se supone que los esquemas son equivalentes a usuarios de base de datos, los resultados obtenidos podrían ser incorrectos. Las vistas de catálogo antiguas, incluida sysobjects, no deben usarse en una base de datos en la que se ha usado alguna de las siguientes instrucciones DDL: 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. En una base de datos en la que se ha usado alguna de estas instrucciones, deben usarse las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se establece en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL). |
Permisos
Para transferir un asegurable de un esquema a otro, el usuario actual debe tener el permiso CONTROL para el asegurable (no el esquema) y el permiso ALTER para el esquema de destino.
Si el asegurable tiene una especificación EXECUTE AS OWNER y el propietario se establece en SCHEMA OWNER, el usuario también debe tener el permiso IMPERSONATION para el propietario del esquema de destino.
Cuando se mueve el asegurable, se quitan todos los permisos asociados a él.
Ejemplos
En el siguiente ejemplo se modifica el esquema HumanResources
transfiriendo la tabla Address
del esquema Person
al esquema.
USE AdventureWorks;
GO
ALTER SCHEMA HumanResources TRANSFER Person.Address;
GO
Vea también
Referencia
CREATE SCHEMA (Transact-SQL)
DROP SCHEMA (Transact-SQL)
EVENTDATA (Transact-SQL)
Otros recursos
Separación de esquemas de usuario