ALTER USER (Transact-SQL)
Cambia el nombre de un usuario de base de datos o cambia su esquema predeterminado.
Convenciones de sintaxis de Transact-SQL
Sintaxis
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
Argumentos
- user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
- LOGIN **=**login_name
Reasigna un usuario a otro inicio de sesión al cambiar el identificador de seguridad del usuario (SID) para que coincida con el SID del inicio de sesión.
- NAME **=**new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
- DEFAULT_SCHEMA **=**schema_name
Especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.
Notas
Si DEFAULT_SCHEMA se deja sin definir, el usuario tendrá dbo como su esquema predeterminado. DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en al base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema. No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un grupo de Windows, un certificado o una clave asimétrica.
Importante: |
---|
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro de la función fija del servidor sysadmin. Todos los miembros de la función fija del servidor sysadmin tienen un esquema predeterminado dbo . |
Sólo puede cambiar el nombre de un usuario que está asignado a un grupo o inicio de sesión de Windows cuando el SID del nuevo nombre de usuario coincide con el SID registrado en la base de datos. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.
La cláusula WITH LOGIN permite reasignar un usuario a un inicio de sesión diferente. Con esta cláusula no se pueden reasignar los usuarios sin un inicio de sesión, los usuarios asignados a un certificado ni los usuarios asignados a una clave asimétrica. Sólo se pueden reasignar los usuarios de SQL Server y los usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de .
El nombre del usuario se cambiará automáticamente al nombre de inicio de sesión si se trata de un usuario de Windows, si el nombre es un nombre de Windows (contiene una barra diagonal inversa), o si no se especificó ningún nombre nuevo para él y su nombre actual es diferente del nombre de inicio de sesión. En caso contrario, no se cambiará el nombre al usuario a menos que el autor de las llamadas invoque además la cláusula NAME.
[!NOTA] Un usuario con permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario con un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
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 cambiar el nombre de un usuario se requiere el permiso ALTER ANY USER en la base de datos. Para cambiar el esquema predeterminado se requiere el permiso ALTER en el usuario. Un usuario puede cambiar su propio esquema predeterminado.
Requiere el permiso CONTROL en la base de datos para reasignar un usuario a un inicio de sesión.
Ejemplos
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
USE AdventureWorks;
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
USE AdventureWorks;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Vea también
Referencia
CREATE USER (Transact-SQL)
DROP USER (Transact-SQL)
EVENTDATA (Transact-SQL)