ALTER USER (Transact-SQL)
Cambia el nombre de un usuario de base de datos o cambia su esquema predeterminado.
Sintaxis
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
Argumentos
userName
Especifica el nombre por el que se identifica al usuario en esta base de datos.LOGIN =loginName
Reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.NAME =newUserName
Especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.DEFAULT_SCHEMA =schemaName
Especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.
Comentarios
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 la 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 ignora si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros de la función fija de servidor sysadmin tienen un esquema predeterminado de dbo. |
Solo 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 habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y 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 SQL Server.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
El usuario es un usuario de Windows.
El nombre es un nombre de Windows (contiene una barra diagonal inversa).
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
Nota
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga 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 |
---|
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera 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 esas bases de datos, debe usar 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 estableció 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 o reasignar a este a un inicio de sesión diferente, 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. Los usuarios solo pueden cambiar su propio esquema predeterminado.
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 AdventureWorks2008R2;
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 AdventureWorks2008R2;
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO