ALTER USER (Transact-SQL)

Cambia el nombre de un usuario de base de datos o cambia su esquema predeterminado.

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

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.

Nota importanteImportante

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 (\).

Nota de advertenciaAdvertencia

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