Compartir a través de


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

Nota:

Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).

Selección de un producto

En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.

* SQL Server *  

 

SQL Server

Sintaxis

-- Syntax for SQL Server

ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

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 | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.

PASSWORD = 'password' Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.

Especifica la contraseña del usuario que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.

Nota:

Esta opción solo está disponible para los usuarios contenidos. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD ='oldpassword'Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.

La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.

Nota:

Esta opción solo está disponible para los usuarios contenidos.

DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.

Especifica el idioma predeterminado que debe asignarse al usuario. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.

Nota:

Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database.

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.

Observaciones

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.

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 certificado o una clave asimétrica.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado 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.

Puede originarse un SID no coincidente cuando se ha restaurado una base de datos de otro servidor y se ha asignado un usuario de base de datos a un inicio de sesión de SQL Server. Puede usar la cláusula WITH LOGIN para corregir esta situación reemplazando el SID de usuario de la base de datos por el SID de inicio de sesión del servidor.

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.

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

Precaución

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

Seguridad

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.

Permisos

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.

Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.

Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.

Ejemplos

Todos los ejemplos se ejecutan en una base de datos de usuario.

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.

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Cambiar varias opciones a la vez

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.

Válido para : SQL Server 2012 (11.x) y versiones posteriores.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO

D. Corrección de un SID no coincidente

En el ejemplo siguiente se corrige el SID del usuario de la base de datos para que coincida con el SID del servidor para un inicio de sesión de SQL Server autenticado.

ALTER USER Mai
WITH LOGIN = Mai;
GO

Consulte también

* SQL Database *

 

SQL Database

Sintaxis

-- Syntax for Azure SQL Database

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = schemaName
| LOGIN = loginName
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]

-- Azure SQL Database Update Syntax
ALTER USER userName
 WITH <set_item> [ ,...n ]
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- SQL Database syntax when connected to a federation member
ALTER USER userName
 WITH <set_item> [ ,... n ]
[;]

<set_item> ::=
 NAME = newUserName

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.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.

NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.

PASSWORD = 'password' Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.

Especifica la contraseña del usuario que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.

Nota:

Esta opción solo está disponible para los usuarios contenidos. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD ='oldpassword'Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.

La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.

Nota:

Esta opción solo está disponible para los usuarios contenidos.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database.

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.

Observaciones

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.

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 certificado o una clave asimétrica.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado 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.

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

Precaución

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

Seguridad

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.

Permisos

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.

Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.

Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.

Ejemplos

Todos los ejemplos se ejecutan en una base de datos de usuario.

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.

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Cambiar varias opciones a la vez

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO

Consulte también

* SQL Managed Instance *

 

Azure SQL Managed Instance

Sintaxis

Importante

Solo se admiten las siguientes opciones para Azure SQL Instancia administrada al aplicar a los usuarios con inicios de sesión de Microsoft Entra: DEFAULT_SCHEMA = { schemaName | NULL } y DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }

hay una nueva extensión de sintaxis que se agregó para ayudar a reasignar usuarios de una base de datos que se migró a Azure SQL Instancia administrada. La sintaxis ALTER USER ayuda a asignar usuarios de base de datos en un dominio federado y sincronizado con microsoft Entra ID, a inicios de sesión de Microsoft Entra.

-- Syntax for SQL Managed Instance
ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:

/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/

ALTER USER userName
 { WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]

<set_item> ::=
 NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }

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.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.

NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.

PASSWORD = 'password'

Especifica la contraseña del usuario que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.

Nota:

Esta opción solo está disponible para los usuarios contenidos. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD = 'oldpassword'

La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.

Nota:

Esta opción solo está disponible para los usuarios contenidos.

DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }

Especifica el idioma predeterminado que debe asignarse al usuario. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.

Nota:

Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.

Observaciones

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.

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 certificado o una clave asimétrica.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado 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. La única excepción es cuando se cambia un usuario de Windows a un usuario de Microsoft Entra.

Nota:

Las siguientes reglas no se aplican a los usuarios de Windows en Azure SQL Managed Instance, ya que no se admite la creación de inicios de sesión de Windows en dicho servicio. La opción WITH LOGIN solo se puede usar si los inicios de sesión de Microsoft Entra están presentes.

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.

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

Precaución

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

Comentarios para usuarios de Windows en SQL en el entorno local migrados a Azure SQL Managed Instance

Estos comentarios se aplican a la autenticación como usuarios de Windows que se han federado y sincronizado con el identificador de Microsoft Entra.

  • La validación de usuarios o grupos de Windows asignados a Microsoft Entra ID se realiza de forma predeterminada a través de Graph API en todas las versiones de la sintaxis ALTER USER usada para la migración.
  • Los usuarios locales con alias (use un nombre diferente de la cuenta de Windows original) conservarán el nombre con alias.
  • Para la autenticación de Microsoft Entra, el parámetro LOGIN solo se aplica a Azure SQL Instancia administrada y no se puede usar con SQL Database.
  • Para ver los inicios de sesión de las entidades de seguridad de Microsoft Entra, use el siguiente comando:

select * from sys.server_principals.

  • Compruebe que el tipo indicado del inicio de sesión sea E o X.
  • La opción PASSWORD no se puede usar para los usuarios de Microsoft Entra.
  • En todos los casos de migración, los roles y permisos de usuarios o grupos de Windows se transferirán automáticamente a los nuevos usuarios o grupos de Microsoft Entra.
  • Una nueva extensión de sintaxis, FROM EXTERNAL PROVIDER está disponible para modificar usuarios y grupos de Windows de SQL local a usuarios y grupos de Microsoft Entra. El dominio de Windows debe estar federado con el identificador de Entra de Microsoft y todos los miembros del dominio de Windows deben existir en microsoft Entra ID al usar esta extensión. La sintaxis FROM EXTERNAL PROVIDER se aplica a Azure SQL Instancia administrada y debe usarse en caso de que los usuarios de Windows no tengan inicios de sesión en la instancia de SQL original y deban asignarse a usuarios independientes de la base de datos de Microsoft Entra.
  • En este caso, el valor userName permitido puede ser:
  • Un usuario de Windows (domain\user).
  • Un grupo de Windows (MyWidnowsGroup).
  • Un alias de Windows (MyWindowsAlias).
  • El resultado del comando ALTER reemplaza el nombredeusuario antiguo por el nombre correspondiente que se encuentra en el identificador de Entra de Microsoft basado en el SID original del nombredeusuario antiguo. El nombre modificado se sustituye y almacena en los metadatos de la base de datos:
  • (dominio\usuario) se reemplazará por Microsoft Entra user@domain.com.
  • (domain\MyWidnowsGroup) se reemplazará por el grupo Microsoft Entra.
  • (MyWindowsAlias) permanecerá sin cambios, pero el SID de este usuario se comprobará en microsoft Entra ID.

Nota:

Si no se encuentra el SID del usuario original convertido en objectID en Microsoft Entra ID, se producirá un error en el comando ALTER USER.

  • Para ver los usuarios modificados, use el siguiente comando: select * from sys.database_principals.
  • Compruebe el tipo indicado por el usuario E o X.
  • Cuando name se usa para migrar usuarios de Windows a usuarios de Microsoft Entra, se aplican las restricciones siguientes:
  • Debe especificarse un LOGIN válido.
  • El nombre se comprobará en el identificador de Microsoft Entra y solo puede ser:
  • El nombre de LOGIN.
  • Alias: el nombre no puede existir en microsoft Entra ID.
  • En todos los demás casos, se producirá un error en la sintaxis.

Seguridad

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.

Permisos

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.

Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.

Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.

Ejemplos

Todos los ejemplos se ejecutan en una base de datos de usuario.

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.

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C. Cambiar varias opciones a la vez

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.

ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO

D. Asignar el usuario de la base de datos a un inicio de sesión de Microsoft Entra después de la migración

En el ejemplo siguiente se vuelve a asignar el usuario a westus/joe un usuario de Microsoft Entra, joe@westus.com. Este ejemplo es para los inicios de sesión ya existentes en la instancia administrada. Esto debe realizarse después de haber completado una migración de base de datos a Azure SQL Instancia administrada y desea usar el inicio de sesión de Microsoft Entra para autenticarse.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]

E. Asignación de un usuario antiguo de Windows en la base de datos sin inicio de sesión en Azure SQL Instancia administrada a un usuario de Microsoft Entra

En el ejemplo siguiente se vuelve a asignar el usuario, westus/joe sin un inicio de sesión, a un usuario de Microsoft Entra, joe@westus.com. El usuario federado debe existir en microsoft Entra ID.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Asignación del alias de usuario a un inicio de sesión de Microsoft Entra existente

En el ejemplo siguiente se reasigna el nombre de usuario westus\joe a joe_alias. El inicio de sesión de Microsoft Entra correspondiente en este caso es joe@westus.com.

ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias

G. Asignación de un grupo de Windows que se migró en Azure SQL Instancia administrada a un grupo de Microsoft Entra

En el ejemplo siguiente se vuelve a asignar el grupo local anterior a westus\mygroup un grupo mygroup de Microsoft Entra en la instancia administrada. El grupo debe existir en el identificador de Entra de Microsoft.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

Consulte también

* Azure Synapse
Analytics *

 

Azure Synapse Analytics

Sintaxis

-- Syntax for Azure Synapse

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

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.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.

NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.

Observaciones

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.

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 certificado o una clave asimétrica.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.

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.

  • 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.

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

Precaución

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

Seguridad

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.

Permisos

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.

Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.

Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.

Ejemplos

Todos los ejemplos se ejecutan en una base de datos de usuario.

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.

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Consulte también

* Analytics
Platform System (PDW) *

 

Sistema de la plataforma de análisis

Sintaxis

-- Syntax for Analytics Platform System

ALTER USER userName
 WITH <set_item> [ ,...n ]

<set_item> ::=
 NAME = newUserName
 | LOGIN = loginName
 | DEFAULT_SCHEMA = schema_name
[;]

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.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.

NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.

Observaciones

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.

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 certificado o una clave asimétrica.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.

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.

  • 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.

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

Precaución

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

Seguridad

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.

Permisos

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.

Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.

Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.

Ejemplos

Todos los ejemplos se ejecutan en una base de datos de usuario.

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.

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.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Consulte también