ALTER USER (Transact-SQL)

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

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

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 posterior, 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 posterior, 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 posterior, 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 posterior, 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 posterior, 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 posterior, 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
WITHNAME = 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 opciones siguientes para Azure SQL Managed Instance cuando se aplica a usuarios con inicios de sesión de Azure AD: DEFAULT_SCHEMA = { schemaName | NULL } y DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }.

Hay una nueva extensión de sintaxis que se ha agregado para facilitar la reasignación de usuarios en una base de datos migrada a la Azure SQL Managed Instance. La sintaxis de ALTER USER ayuda a asignar usuarios de base de datos en un dominio federado y sincronizado con Azure AD a inicios de sesión de Azure AD.

-- 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 Azure AD.

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 existen inicios de sesión de Azure AD.

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

Estas notas se aplican a la autenticación como usuarios de Windows que se han federado y sincronizado con Azure AD.

Nota

La funcionalidad de administrador de Azure AD para Azure SQL Managed Instance después de la creación ha cambiado. Para obtener más información, consulte Nueva funcionalidad de administrador de Azure AD para MI.

  • La validación de los usuarios o grupos de Windows que se asignan a Azure AD se realiza de forma predeterminada a través de Graph API en todas las versiones de la sintaxis de 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 Azure AD, el parámetro LOGIN solo se aplica a Azure SQL Managed Instance y no se puede usar con SQL Database.
  • Para ver los inicios de sesión de entidades de seguridad de Azure AD, 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 en usuarios de Azure AD.
  • 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 Azure AD.
  • Una nueva extensión de sintaxis, FROM EXTERNAL PROVIDER, está disponible para modificar los usuarios y grupos de Windows de SQL en el entorno local a usuarios y grupos de Azure AD. El dominio de Windows debe estar federado con Azure AD y todos los miembros del dominio de Windows deben estar en Azure AD cuando se use esa extensión. La sintaxis de FROM EXTERNAL PROVIDER se aplica a Azure SQL Managed Instance y debe usarse en caso de que los usuarios de Windows no dispongan de inicios de sesión en la instancia de SQL original y deban asignarse a usuarios de base de datos de Azure AD independientes.
  • 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 valor userName anterior por el nombre correspondiente que se encuentra en Azure AD en función del SID original del valor userName anterior. El nombre modificado se sustituye y almacena en los metadatos de la base de datos:
  • (domain\user) se reemplazará por Azure AD user@domain.com.
  • (domain\MyWidnowsGroup) se reemplazará por el grupo de Azure AD.
  • (MyWindowsAlias) permanecerá sin cambios, pero se comprobará el SID de este usuario en Azure AD.

Nota

Si no se encuentra el SID del usuario original convertido en objectID en Azure AD, 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 se usa NAME para migrar usuarios de Windows a usuarios de Azure AD, se aplican las restricciones siguientes:
  • Debe especificarse un LOGIN válido.
  • Se comprobará NAME en Azure AD y solo podrá ser:
  • El nombre de LOGIN.
  • Un alias: el nombre no puede existir en Azure AD.
  • 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 en la base de datos a un inicio de sesión de Azure AD después de la migración

En el ejemplo siguiente se reasigna el usuario, westus/joe a un usuario de Azure AD, 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 la migración de una base de datos a Azure SQL Managed Instance, y si quiere usar el inicio de sesión de Azure AD para autenticarse.

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

E. Asignar un usuario antiguo de Windows en la base de datos sin un inicio de sesión en Azure SQL Managed Instance a un usuario de Azure AD

En el ejemplo siguiente se reasigna el usuario, westus/joe sin un inicio de sesión, a un usuario de Azure AD, joe@westus.com. El usuario federado debe existir en Azure AD.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F. Asignar el alias de usuario a un inicio de sesión de Azure AD existente

En el ejemplo siguiente se reasigna el nombre de usuario westus\joe a joe_alias. En este caso, el inicio de sesión de Azure AD correspondiente es joe@westus.com.

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

G. Asignar un grupo de Windows que se migró en Azure SQL Managed Instance a un grupo de Azure AD

En el ejemplo siguiente se reasigna el grupo local antiguo westus\mygroup a un grupo de Azure AD mygroup en la instancia administrada. El grupo debe existir en Azure AD.

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