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 user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = login_name
Reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
NAME = new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schema_name | 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 = 'contraseña'
Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, Azure 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, Azure 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> | <nombre de idioma> | <alias de idioma> }
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 adelante, el idioma predeterminado del usuario permanece sin cambios. 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 usuarios contenidos.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
se aplica a: SQL Server 2016 (13.x) y versiones posteriores, Azure 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, consulte Carga masiva de datos cifrados en columnas 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 usa 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 otro inicio de sesión. 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 usar 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 en 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.
De lo contrario, no se cambiará el nombre del usuario a menos que el autor de la llamada invoque 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 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 un usuario de 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
Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.
En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción. Reemplace <new strong password here>
y <old strong password here>
con sus propios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, 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
Contenido relacionado
* Azure SQL Database y Microsoft Fabric *
Azure SQL Database y Microsoft Fabric
Sintaxis
Sintaxis para Azure SQL Database
-- Syntax for Azure SQL Database
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = schema_name
| LOGIN = login_name
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
[;]
-- Azure SQL Database Update Syntax
ALTER USER user_name
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
WITH <set_item> [ ,... n ]
[;]
<set_item> ::=
NAME = new_user_name
Sintaxis para la base de datos SQL en Microsoft Fabric
ALTER USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users that cannot authenticate
ALTER USER user_name
{
{ FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
-- SQL Database syntax when connected to a federation member
ALTER USER user_name
[;]
Sintaxis para Microsoft Fabric Warehouse
-- Syntax for Fabric Data Warehouse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = login_name
Reasigna un usuario a otro inicio de sesión 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 de un lote de 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 de SQL o se ejecuta en SQL dinámico, no se admite la cláusula WITH LOGIN
.
NAME = new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schema_name | NULL }
Especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.
Al establecer el esquema predeterminado en NULL
se quita un esquema predeterminado de un usuario creado para un grupo de identificadores de Microsoft Entra. La opción NULL no se puede usar con ningún otro tipo de usuario.
PASSWORD = 'contraseña'
se aplica a: Azure 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: Azure 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, Azure 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, consulte Carga masiva de datos cifrados en columnas 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 usa ese esquema predeterminado. 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 más de un grupo, el esquema predeterminado para el usuario será el del grupo con la principal_id
más baja y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se usa 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 otro inicio de sesión. 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 los usuarios de SQL. La cláusula WITH LOGIN
no se puede usar para cambiar el tipo de usuario.
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.
De lo contrario, no se cambiará el nombre del usuario a menos que el autor de la llamada invoque 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 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).
Base de datos SQL de Fabric
Para obtener más información, consulte:
- autenticación de en la base de datos SQL de Microsoft Fabric
- autorización de en la base de datos SQL de Microsoft Fabric
Fabric Warehouse
En Microsoft Fabric Warehouse, ALTER USER se limita a establecer solo el esquema predeterminado. No se admiten otros argumentos asociados con ALTER USER en SQL u otros productos y devolverán un error.
En Microsoft Fabric Warehouse, el nombre de intercalación distingue mayúsculas de minúsculas.
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 un usuario tiene un esquema predeterminado, se usará ese esquema. Si no se especifica ningún esquema predeterminado, se aplicará el esquema dbo. En primer lugar, el motor de base de datos intentará resolver objetos en el esquema predeterminado del usuario. Si no se encuentra ningún objeto coincidente, comprobará el esquema dbo.
DEFAULT_SCHEMA se puede establecer 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.
Para obtener más información, consulte:
- permisos granulares de SQL en el de Fabric Warehouse
- Seguridad para el almacenamiento de datos en Microsoft Fabric
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.
Permisos de rol de Fabric Warehouse
Los usuarios con un mínimo de pertenencia al rol COLABORADOR en el área de trabajo pueden cambiar el ESQUEMA PREDETERMINADO de cualquier usuario de Fabric Data Warehouse.
Los usuarios con pertenencia a roles viewer en el área de trabajo no pueden cambiar su propio esquema predeterminado a menos que un usuario con acceso con privilegios elevados conceda este permiso.
Los usuarios incluidos en el rol VIEWER en el nivel de área de trabajo requieren el permiso ALTER ANY USER para cambiar el esquema predeterminado de otros usuarios.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de un usuario de 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. Reemplace <new strong password here>
y <old strong password here>
con sus propios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>';
GO
D. 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
Contenido relacionado
* 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 = { schema_name | 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 user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| 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 user_name
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = new_user_name
| DEFAULT_SCHEMA = { schema_name | NULL }
| LOGIN = login_name
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = login_name
Reasigna un usuario a otro inicio de sesión 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 de un lote de 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 de SQL o se ejecuta en SQL dinámico, no se admite la cláusula WITH LOGIN
.
NAME = new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schema_name | 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 = 'contraseña'
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> | <nombre de idioma> | <alias de idioma> }
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 usuarios contenidos.
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, consulte Carga masiva de datos cifrados en columnas 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 usa ese esquema predeterminado. 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 usa 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 otro inicio de sesión. 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 usar 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.
De lo contrario, no se cambiará el nombre del usuario a menos que el autor de la llamada invoque 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 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
oX
. - 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.
-
FROM EXTERNAL PROVIDER
consiste en 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 sintaxisFROM EXTERNAL PROVIDER
se aplica a Azure SQL Managed Instance y debe usarse en caso de que los usuarios de Windows no tengan inicios de sesión en la instancia sql original y deban asignarse a usuarios independientes de la base de datos de Microsoft Entra. - En este caso, el
user_name
permitido puede ser: - Un usuario de Windows (
domain\user
). - Un grupo de Windows (
MyWindowsGroup
). - Alias de Windows (
MyWindowsAlias
). - El resultado del comando ALTER reemplaza el antiguo
user_name
por el nombre correspondiente que se encuentra en el identificador de Entra de Microsoft basado en el SID original del antiguouser_name
. El nombre modificado se sustituye y almacena en los metadatos de la base de datos: - (
domain\user
) se reemplazará por Microsoft Entrauser@domain.com
. - (
domain\MyWindowsGroup
) 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 el SID del usuario original convertido en object_ID
no se encuentra en el inquilino del identificador de Entra de Microsoft, 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
oX
. - 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 inquilino del identificador de Entra de Microsoft 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 produce 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 un usuario de 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. Reemplace <new strong password here>
y <old strong password here>
con sus propios valores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = '<new strong password here>' OLD_PASSWORD = '<old strong password here>'
, 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;
Contenido relacionado
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintaxis
-- Syntax for Azure Synapse
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = login_name
Reasigna un usuario a otro inicio de sesión 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 de un lote de 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 de SQL o se ejecuta en SQL dinámico, no se admite la cláusula WITH LOGIN
.
NAME = new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schema_name | 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 usa ese esquema predeterminado. 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 usa 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 otro inicio de sesión. 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 usar 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.
De lo contrario, no se cambiará el nombre del usuario a menos que el autor de la llamada invoque 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 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 un usuario de 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
Contenido relacionado
* Analytics
Platform System (PDW) *
Sistema de la plataforma de análisis
Sintaxis
-- Syntax for Analytics Platform System
ALTER USER user_name
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = new_user_name
| LOGIN = login_name
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = login_name
Reasigna un usuario a otro inicio de sesión 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 de un lote de 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 de SQL o se ejecuta en SQL dinámico, no se admite la cláusula WITH LOGIN
.
NAME = new_user_name
Especifica el nuevo nombre de este usuario. new_user_name no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schema_name | 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 usa ese esquema predeterminado. 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 usa 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 otro inicio de sesión. 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 usar 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.
De lo contrario, no se cambiará el nombre del usuario a menos que el autor de la llamada invoque 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 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 un usuario de 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