ALTER USER (Transact-SQL)ALTER USER (Transact-SQL)

Cambia el nombre de un usuario de base de datos o cambia su esquema predeterminado.Renames a database user or changes its default schema.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

Selección de un productoSelect a product

En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.In the following row, select the product name you're interested in, and only that product’s information is displayed.

* SQL Server *  * SQL Server *  

 

SQL ServerSQL Server

SintaxisSyntax

-- 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 ]

ArgumentosArguments

userName especifica el nombre por el que se identifica al usuario en esta base de datos.userName Specifies the name by which the user is identified inside this database.

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.LOGIN = loginName Remaps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

NAME = newUserName especifica el nuevo nombre de este usuario.NAME = newUserName Specifies the new name for this user. newUserName no debe existir en la base de datos actual.newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.DEFAULT_SCHEMA = { schemaName | NULL } Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows.Setting the default schema to NULL removes a default schema from a Windows group. La opción NULL no se puede utilizar con un usuario de Windows.The NULL option cannot be used with a Windows user.

PASSWORD = 'password' Se aplica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) y posterior, SQL DatabaseSQL Database.PASSWORD = 'password' Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, SQL DatabaseSQL Database.

Especifica la contraseña del usuario que se está cambiando.Specifies the password for the user that is being changed. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).For more information, see Contained Databases and sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD = 'oldpassword' Se aplica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) y posterior, SQL DatabaseSQL Database.OLD_PASSWORD ='oldpassword' Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, SQL DatabaseSQL Database.

La contraseña de usuario actual que se reemplazará por 'password'.The current user password that will be replaced by 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER.OLD_PASSWORD is required to change a password, unless you have ALTER ANY USER permission. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.Requiring OLD_PASSWORD prevents users with IMPERSONATION permission from changing the password.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users.

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

Especifica el idioma predeterminado que debe asignarse al usuario.Specifies a default language to be assigned to the user. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos.If this option is set to NONE, the default language is set to the current default language of the database. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará.If the default language of the database is later changed, the default language of the user will remain unchanged. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.DEFAULT_LANGUAGE can be the local ID (lcid), the name of the language, or the language alias.

Nota

Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.This option may only be specified in a contained database and only for contained users.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Se aplica a: SQL Server 2016 (13.x)SQL Server 2016 (13.x) y posterior, SQL DatabaseSQL Database.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later, SQL DatabaseSQL Database.

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva.Suppresses cryptographic metadata checks on the server in bulk copy operations. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. El valor predeterminado es OFF.The default is OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos.Improper use of this option can lead to data corruption. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

ObservacionesRemarks

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema.If the user has a default schema, that default schema will be used. 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.If the user doesn't have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 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.If the user doesn't have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos.DEFAULT_SCHEMA can be set to a schema that doesn't currently occur in the database. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.DEFAULT_SCHEMA can't be specified for a user who is mapped to a certificate, or an asymmetric key.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.All members of the sysadmin fixed server role have a default schema of 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.You can change the name of a user who is mapped to a Windows login or group only when the SID of the new user name matches the SID that is recorded in the database. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.This check helps prevent spoofing of Windows logins in the database.

La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente.The WITH LOGIN clause enables the remapping of a user to a different login. 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.Users without a login, users mapped to a certificate, or users mapped to an asymmetric key can't be remapped with this clause. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows.Only SQL users and Windows users (or groups) can be remapped. 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 ServerSQL Server.The WITH LOGIN clause can't be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login.

El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.The name of the user will be automatically renamed to the login name if the following conditions are true.

  • El usuario es un usuario de Windows.The user is a Windows user.

  • El nombre es un nombre de Windows (contiene una barra diagonal inversa).The name is a Windows name (contains a backslash).

  • No se ha especificado ningún nombre nuevo.No new name was specified.

  • El nombre actual difiere del nombre de inicio de sesión.The current name differs from the login name.

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.Otherwise, the user won't be renamed unless the caller additionally invokes the NAME clause.

El nombre de un usuario asignado a un inicio de sesión de SQL ServerSQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key can't contain the backslash character (\).

Precaución

El comportamiento de los esquemas cambió en SQL Server 2005.Beginning with SQL Server 2005, the behavior of schemas changed. 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.As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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.In such databases you must instead use the new catalog views. 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.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

SeguridadSecurity

Nota

Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario.A user who has ALTER ANY USER permission can change the default schema of any user. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

PermisosPermissions

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.To change the name of a user requires the ALTER ANY USER permission.

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.To change the target login of a user requires the CONTROL permission on the database.

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.To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario.To change the default schema or language requires ALTER permission on the user. Los usuarios pueden cambiar el idioma y el esquema predeterminados.Users can change their own default schema or language.

EjemplosExamples

Todos los ejemplos se ejecutan en una base de datos de usuario.All examples are executed in a user database.

A.A. Cambiar el nombre de usuario de una base de datosChanging the name of a database user

En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5 a Mary51.The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B.B. Cambiar el esquema predeterminado de un usuarioChanging the default schema of a user

En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51 a Purchasing.The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.C. Cambiar varias opciones a la vezChanging several options at once

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.The following example changes several options for a contained database user in one statement.

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

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

Consulte tambiénSee also

* SQL Database ** SQL Database *

 

SQL DatabaseSQL Database

SintaxisSyntax

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

ArgumentosArguments

userName especifica el nombre por el que se identifica al usuario en esta base de datos.userName Specifies the name by which the user is identified inside this database.

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.LOGIN = loginName Remaps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN.If the ALTER USER statement is the only statement in a SQL batch, Azure SQL Database supports the WITH LOGIN clause. 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.If the ALTER USER statement isn't the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause isn't supported.

NAME = newUserName especifica el nuevo nombre de este usuario.NAME = newUserName Specifies the new name for this user. newUserName no debe existir en la base de datos actual.newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.DEFAULT_SCHEMA = { schemaName | NULL } Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows.Setting the default schema to NULL removes a default schema from a Windows group. La opción NULL no se puede utilizar con un usuario de Windows.The NULL option can't be used with a Windows user.

PASSWORD = 'password' Se aplica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) y posterior, SQL DatabaseSQL Database.PASSWORD = 'password' Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, SQL DatabaseSQL Database.

Especifica la contraseña del usuario que se está cambiando.Specifies the password for the user that is being changed. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).For more information, see Contained Databases and sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD = 'oldpassword' Se aplica a: SQL Server 2012 (11.x)SQL Server 2012 (11.x) y posterior, SQL DatabaseSQL Database.OLD_PASSWORD ='oldpassword' Applies to: SQL Server 2012 (11.x)SQL Server 2012 (11.x) and later, SQL DatabaseSQL Database.

La contraseña de usuario actual que se reemplazará por 'password'.The current user password that will be replaced by 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER.OLD_PASSWORD is required to change a password, unless you have ALTER ANY USER permission. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.Requiring OLD_PASSWORD prevents users with IMPERSONATION permission from changing the password.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Se aplica a: SQL Server 2016 (13.x)SQL Server 2016 (13.x) y posterior, SQL DatabaseSQL Database.ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Applies to: SQL Server 2016 (13.x)SQL Server 2016 (13.x) and later, SQL DatabaseSQL Database.

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva.Suppresses cryptographic metadata checks on the server in bulk copy operations. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. El valor predeterminado es OFF.The default is OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos.Improper use of this option can lead to data corruption. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

ObservacionesRemarks

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema.If the user has a default schema, that default schema will used. 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.If the user doesn't have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 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.If the user doesn't have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos.DEFAULT_SCHEMA can be set to a schema that doesn't currently occur in the database. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.DEFAULT_SCHEMA can't be specified for a user who is mapped to a certificate, or an asymmetric key.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.All members of the sysadmin fixed server role have a default schema of 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.You can change the name of a user who is mapped to a Windows login or group only when the SID of the new user name matches the SID that is recorded in the database. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.This check helps prevent spoofing of Windows logins in the database.

La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente.The WITH LOGIN clause enables the remapping of a user to a different login. 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.Users without a login, users mapped to a certificate, or users mapped to an asymmetric key can't be remapped with this clause. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows.Only SQL users and Windows users (or groups) can be remapped. 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 ServerSQL Server.The WITH LOGIN clause can't be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login.

El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.The name of the user will be automatically renamed to the login name if the following conditions are true.

  • El usuario es un usuario de Windows.The user is a Windows user.

  • El nombre es un nombre de Windows (contiene una barra diagonal inversa).The name is a Windows name (contains a backslash).

  • No se ha especificado ningún nombre nuevo.No new name was specified.

  • El nombre actual difiere del nombre de inicio de sesión.The current name differs from the login name.

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.Otherwise, the user won't be renamed unless the caller additionally invokes the NAME clause.

El nombre de un usuario asignado a un inicio de sesión de SQL ServerSQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key can't contain the backslash character (\).

Precaución

El comportamiento de los esquemas cambió en SQL Server 2005.Beginning with SQL Server 2005, the behavior of schemas changed. 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.As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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.In such databases you must instead use the new catalog views. 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.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

SeguridadSecurity

Nota

Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario.A user who has ALTER ANY USER permission can change the default schema of any user. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

PermisosPermissions

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.To change the name of a user requires the ALTER ANY USER permission.

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.To change the target login of a user requires the CONTROL permission on the database.

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.To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario.To change the default schema or language requires ALTER permission on the user. Los usuarios pueden cambiar el idioma y el esquema predeterminados.Users can change their own default schema or language.

EjemplosExamples

Todos los ejemplos se ejecutan en una base de datos de usuario.All examples are executed in a user database.

A.A. Cambiar el nombre de usuario de una base de datosChanging the name of a database user

En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5 a Mary51.The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B.B. Cambiar el esquema predeterminado de un usuarioChanging the default schema of a user

En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51 a Purchasing.The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.C. Cambiar varias opciones a la vezChanging several options at once

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.The following example changes several options for a contained database user in one statement.

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

Consulte tambiénSee also

* SQL Managed Instance ** SQL Managed Instance *

 

Azure SQL Managed InstanceAzure SQL Managed Instance

SintaxisSyntax

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 }.Only the following options are supported for Azure SQL Managed Instance when applying to users with Azure AD logins: DEFAULT_SCHEMA = { schemaName | NULL } and 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.There is a new syntax extension that was added to help remap users in a database that was migrated to 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.The ALTER USER syntax helps map database users in a federated and synchronized domain with Azure AD, to Azure AD logins.

-- 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> }

ArgumentosArguments

userName especifica el nombre por el que se identifica al usuario en esta base de datos.userName Specifies the name by which the user is identified inside this database.

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.LOGIN = loginName Remaps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN.If the ALTER USER statement is the only statement in a SQL batch, Azure SQL Database supports the WITH LOGIN clause. 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.If the ALTER USER statement isn't the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause isn't supported.

NAME = newUserName especifica el nuevo nombre de este usuario.NAME = newUserName Specifies the new name for this user. newUserName no debe existir en la base de datos actual.newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.DEFAULT_SCHEMA = { schemaName | NULL } Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows.Setting the default schema to NULL removes a default schema from a Windows group. La opción NULL no se puede utilizar con un usuario de Windows.The NULL option can't be used with a Windows user.

PASSWORD = 'password'PASSWORD = 'password'

Especifica la contraseña del usuario que se está cambiando.Specifies the password for the user that is being changed. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).For more information, see Contained Databases and sp_migrate_user_to_contained (Transact-SQL).

OLD_PASSWORD = 'oldpassword'OLD_PASSWORD = 'oldpassword'

La contraseña de usuario actual que se reemplazará por 'password'.The current user password that will be replaced by 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas.Passwords are case-sensitive. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER.OLD_PASSWORD is required to change a password, unless you have ALTER ANY USER permission. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.Requiring OLD_PASSWORD prevents users with IMPERSONATION permission from changing the password.

Nota

Esta opción solo está disponible para los usuarios contenidos.This option is available only for contained users.

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

Especifica el idioma predeterminado que debe asignarse al usuario.Specifies a default language to be assigned to the user. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos.If this option is set to NONE, the default language is set to the current default language of the database. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará.If the default language of the database is later changed, the default language of the user will remain unchanged. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.DEFAULT_LANGUAGE can be the local ID (lcid), the name of the language, or the language alias.

Nota

Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.This option may only be specified in a contained database and only for contained users.

ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]

Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva.Suppresses cryptographic metadata checks on the server in bulk copy operations. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos.This enables the user to bulk copy encrypted data between tables or databases, without decrypting the data. El valor predeterminado es OFF.The default is OFF.

Advertencia

Si esta opción no se utiliza adecuadamente, pueden dañarse los datos.Improper use of this option can lead to data corruption. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.For more information, see Migrate Sensitive Data Protected by Always Encrypted.

ObservacionesRemarks

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema.If the user has a default schema, that default schema will used. 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.If the user doesn't have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 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.If the user doesn't have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos.DEFAULT_SCHEMA can be set to a schema that doesn't currently occur in the database. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.DEFAULT_SCHEMA can't be specified for a user who is mapped to a certificate, or an asymmetric key.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.All members of the sysadmin fixed server role have a default schema of 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.You can change the name of a user who is mapped to a Windows login or group only when the SID of the new user name matches the SID that is recorded in the database. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.This check helps prevent spoofing of Windows logins in the database.

La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente.The WITH LOGIN clause enables the remapping of a user to a different login. 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.Users without a login, users mapped to a certificate, or users mapped to an asymmetric key can't be remapped with this clause. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows.Only SQL users and Windows users (or groups) can be remapped. 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 ServerSQL Server.The WITH LOGIN clause can't be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login. La única excepción es cuando se cambia un usuario de Windows a un usuario de Azure AD.The only exception is when changing a Windows user to an Azure AD user.

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.The following rules do not apply to Windows users on Azure SQL Managed Instance as we do not support creating Windows logins on Azure SQL Managed Instance. La opción WITH LOGIN solo se puede usar si existen inicios de sesión de Azure AD.The WITH LOGIN option can only be used if Azure AD logins are present.

El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.The name of the user will be automatically renamed to the login name if the following conditions are true.

  • El usuario es un usuario de Windows.The user is a Windows user.

  • El nombre es un nombre de Windows (contiene una barra diagonal inversa).The name is a Windows name (contains a backslash).

  • No se ha especificado ningún nombre nuevo.No new name was specified.

  • El nombre actual difiere del nombre de inicio de sesión.The current name differs from the login name.

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.Otherwise, the user won't be renamed unless the caller additionally invokes the NAME clause.

El nombre de un usuario asignado a un inicio de sesión de SQL ServerSQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key can't contain the backslash character (\).

Precaución

El comportamiento de los esquemas cambió en SQL Server 2005.Beginning with SQL Server 2005, the behavior of schemas changed. 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.As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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.In such databases you must instead use the new catalog views. 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.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

Comentarios para usuarios de Windows en SQL en el entorno local migrados a Azure SQL Managed InstanceRemarks for Windows users in SQL on-premises migrated to 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.These remarks apply to authenticating as Windows users that have been federated and synchronized with Azure AD.

Nota

La funcionalidad de administrador de Azure AD para Azure SQL Managed Instance después de la creación ha cambiado.The Azure AD admin for Azure SQL Managed Instance functionality after creation has changed. Para obtener más información, consulte Nueva funcionalidad de administrador de Azure AD para MI.For more information, see New Azure AD admin functionality for 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.Validation of Windows users or groups that are mapped to Azure AD is done by default through Graph API in all versions of the ALTER USER syntax used for migration purpose.
  • Los usuarios locales con alias (use un nombre diferente de la cuenta de Windows original) conservarán el nombre con alias.On-premises users that were aliased (use a different name from the original Windows account) will keep the aliased name.
  • 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.For Azure AD authentication, the LOGIN parameter applies only to Azure SQL Managed Instance and can't be used with 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.To view logins for Azure AD Principals, use the following command: select * from sys.server_principals.
  • Compruebe que el tipo indicado del inicio de sesión sea E o X.Check the login's indicated type is E or X.
  • La opción PASSWORD no se puede usar en usuarios de Azure AD.PASSWORD option can't be used for Azure AD users.
  • 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.In all migration cases, the roles and permissions of Windows users or groups will automatically be transferred to the new Azure AD users or groups.
  • 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.A new syntax extension, FROM EXTERNAL PROVIDER is available for altering Windows users and groups from SQL on-premises to Azure AD users and groups. 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.The Windows domain must be federated with Azure AD and all Windows domain members must exist in Azure AD when using this extension. 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.The FROM EXTERNAL PROVIDER syntax applies to Azure SQL Managed Instance and should be used in case Windows users do not have logins on the original SQL instance and need to be mapped to standalone Azure AD database users.
  • En este caso, el valor userName permitido puede ser:In this case, the allowable userName can be:
  • Un usuario de Windows (domain\user).A Widows user (domain\user).
  • Un grupo de Windows (MyWidnowsGroup).A Windows group (MyWidnowsGroup).
  • Un alias de Windows (MyWindowsAlias).A Windows alias (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.The outcome of the ALTER command replaces the old userName with the corresponding name that is found in Azure AD based on the original SID of the old userName. El nombre modificado se sustituye y almacena en los metadatos de la base de datos:The altered name is replaced and stored in the metadata of the database:
  • (domain\user) se reemplazará por Azure AD user@domain.com.(domain\user) will be replaced with Azure AD user@domain.com.
  • (domain\MyWidnowsGroup) se reemplazará por el grupo de Azure AD.(domain\MyWidnowsGroup) will be replaced with Azure AD group.
  • (MyWindowsAlias) permanecerá sin cambios, pero se comprobará el SID de este usuario en Azure AD.(MyWindowsAlias) will remain unchanged but the SID of this user will be checked in 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.If the SID of the original user converted to objectID cannot be found in Azure AD, the ALTER USER command will fail.

  • Para ver los usuarios modificados, use el siguiente comando: select * from sys.database_principals.To view altered users, use the following command: select * from sys.database_principals
  • Compruebe el tipo indicado por el usuario E o X.Check the user's indicated type E or X.
  • Cuando se usa NAME para migrar usuarios de Windows a usuarios de Azure AD, se aplican las restricciones siguientes:When NAME is used to migrate Windows users to Azure AD users, the following restrictions apply:
  • Debe especificarse un LOGIN válido.A valid LOGIN must be specified.
  • Se comprobará NAME en Azure AD y solo podrá ser:The NAME will be checked in Azure AD and can only be:
  • El nombre de LOGIN.The name of the LOGIN.
  • Un alias: el nombre no puede existir en Azure AD.An alias - the name can't exist in Azure AD.
  • En todos los demás casos, se producirá un error en la sintaxis.In all other cases, the syntax will fail.

SeguridadSecurity

Nota

Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario.A user who has ALTER ANY USER permission can change the default schema of any user. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

PermisosPermissions

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.To change the name of a user requires the ALTER ANY USER permission.

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.To change the target login of a user requires the CONTROL permission on the database.

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.To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario.To change the default schema or language requires ALTER permission on the user. Los usuarios pueden cambiar el idioma y el esquema predeterminados.Users can change their own default schema or language.

EjemplosExamples

Todos los ejemplos se ejecutan en una base de datos de usuario.All examples are executed in a user database.

A.A. Cambiar el nombre de usuario de una base de datosChanging the name of a database user

En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5 a Mary51.The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B.B. Cambiar el esquema predeterminado de un usuarioChanging the default schema of a user

En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51 a Purchasing.The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

C.C. Cambiar varias opciones a la vezChanging several options at once

En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.The following example changes several options for a contained database user in one statement.

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

D.D. Asignar el usuario en la base de datos a un inicio de sesión de Azure AD después de la migraciónMap the user in the database to an Azure AD login after migration

En el ejemplo siguiente se reasigna el usuario, westus/joe a un usuario de Azure AD, joe@westus.com.The following example remaps the user, westus/joe to an Azure AD user, joe@westus.com. Este ejemplo es para los inicios de sesión ya existentes en la instancia administrada.This example is for logins that already exist in the managed instance. 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.This needs to be performed after you have completed a database migration to Azure SQL Managed Instance, and want to use the Azure AD login to authenticate.

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

E.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 ADMap an old Windows user in the database without a login in Azure SQL Managed Instance to an Azure AD user

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.The following example remaps the user, westus/joe without a login, to an Azure AD user, joe@westus.com. El usuario federado debe existir en Azure AD.The federated user must exist in Azure AD.

ALTER USER [westus/joe] FROM EXTERNAL PROVIDER

F.F. Asignar el alias de usuario a un inicio de sesión de Azure AD existenteMap the user alias to an existing Azure AD login

En el ejemplo siguiente se reasigna el nombre de usuario westus\joe a joe_alias.The following example remaps the user name, westus\joe to joe_alias. En este caso, el inicio de sesión de Azure AD correspondiente es joe@westus.com.The corresponding Azure AD login in this case is joe@westus.com.

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

G.G. Asignar un grupo de Windows que se migró en Azure SQL Managed Instance a un grupo de Azure ADMap a Windows group that was migrated in Azure SQL Managed Instance to an Azure AD group

En el ejemplo siguiente se reasigna el grupo local antiguo westus\mygroup a un grupo de Azure AD mygroup en la instancia administrada.The following example remaps the old on-premises group, westus\mygroup to an Azure AD group mygroup in the managed instance. El grupo debe existir en Azure AD.The group must exist in Azure AD.

ALTER USER [westus\mygroup] WITH LOGIN = mygroup

Consulte tambiénSee also

* Azure Synapse
Analytics *
* Azure Synapse
Analytics *

 

Azure Synapse AnalyticsAzure Synapse Analytics

SintaxisSyntax

-- Syntax for Azure Synapse

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

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

ArgumentosArguments

userName especifica el nombre por el que se identifica al usuario en esta base de datos.userName Specifies the name by which the user is identified inside this database.

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.LOGIN = loginName Remaps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN.If the ALTER USER statement is the only statement in a SQL batch, Azure SQL Database supports the WITH LOGIN clause. 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.If the ALTER USER statement isn't the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause isn't supported.

NAME = newUserName especifica el nuevo nombre de este usuario.NAME = newUserName Specifies the new name for this user. newUserName no debe existir en la base de datos actual.newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.DEFAULT_SCHEMA = { schemaName | NULL } Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows.Setting the default schema to NULL removes a default schema from a Windows group. La opción NULL no se puede utilizar con un usuario de Windows.The NULL option can't be used with a Windows user.

ObservacionesRemarks

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema.If the user has a default schema, that default schema will used. 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.If the user doesn't have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 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.If the user doesn't have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos.DEFAULT_SCHEMA can be set to a schema that doesn't currently occur in the database. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.DEFAULT_SCHEMA can't be specified for a user who is mapped to a certificate, or an asymmetric key.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.All members of the sysadmin fixed server role have a default schema of dbo.

La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente.The WITH LOGIN clause enables the remapping of a user to a different login. 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.Users without a login, users mapped to a certificate, or users mapped to an asymmetric key can't be remapped with this clause. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows.Only SQL users and Windows users (or groups) can be remapped. 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 ServerSQL Server.The WITH LOGIN clause can't be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login.

El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.The name of the user will be automatically renamed to the login name if the following conditions are true.

  • No se ha especificado ningún nombre nuevo.No new name was specified.

  • El nombre actual difiere del nombre de inicio de sesión.The current name differs from the login name.

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.Otherwise, the user won't be renamed unless the caller additionally invokes the NAME clause.

El nombre de un usuario asignado a un inicio de sesión de SQL ServerSQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key can't contain the backslash character (\).

Precaución

El comportamiento de los esquemas cambió en SQL Server 2005.Beginning with SQL Server 2005, the behavior of schemas changed. 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.As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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.In such databases you must instead use the new catalog views. 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.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

SeguridadSecurity

Nota

Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario.A user who has ALTER ANY USER permission can change the default schema of any user. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

PermisosPermissions

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.To change the name of a user requires the ALTER ANY USER permission.

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.To change the target login of a user requires the CONTROL permission on the database.

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.To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario.To change the default schema or language requires ALTER permission on the user. Los usuarios pueden cambiar el idioma y el esquema predeterminados.Users can change their own default schema or language.

EjemplosExamples

Todos los ejemplos se ejecutan en una base de datos de usuario.All examples are executed in a user database.

A.A. Cambiar el nombre de usuario de una base de datosChanging the name of a database user

En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5 a Mary51.The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B.B. Cambiar el esquema predeterminado de un usuarioChanging the default schema of a user

En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51 a Purchasing.The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Consulte tambiénSee also

* Analytics
Platform System (PDW) *
* Analytics
Platform System (PDW) *

 

Sistema de la plataforma de análisisAnalytics Platform System

SintaxisSyntax

-- Syntax for Analytics Platform System

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

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

ArgumentosArguments

userName especifica el nombre por el que se identifica al usuario en esta base de datos.userName Specifies the name by which the user is identified inside this database.

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.LOGIN = loginName Remaps a user to another login by changing the user's Security Identifier (SID) to match the login's SID.

Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN.If the ALTER USER statement is the only statement in a SQL batch, Azure SQL Database supports the WITH LOGIN clause. 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.If the ALTER USER statement isn't the only statement in a SQL batch or is executed in dynamic SQL, the WITH LOGIN clause isn't supported.

NAME = newUserName especifica el nuevo nombre de este usuario.NAME = newUserName Specifies the new name for this user. newUserName no debe existir en la base de datos actual.newUserName must not already occur in the current database.

DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario.DEFAULT_SCHEMA = { schemaName | NULL } Specifies the first schema that will be searched by the server when it resolves the names of objects for this user. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows.Setting the default schema to NULL removes a default schema from a Windows group. La opción NULL no se puede utilizar con un usuario de Windows.The NULL option can't be used with a Windows user.

ObservacionesRemarks

El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.The default schema will be the first schema that will be searched by the server when it resolves the names of objects for this database user. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.Unless otherwise specified, the default schema will be the owner of objects created by this database user.

Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema.If the user has a default schema, that default schema will used. 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.If the user doesn't have a default schema, but the user is a member of a group that has a default schema, the default schema of the group will be used. 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.If the user doesn't have a default schema, and is a member of more than one group, the default schema for the user will be that of the Windows group with the lowest principal_id and an explicitly set default schema. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.If no default schema can be determined for a user, the dbo schema will be used.

DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos.DEFAULT_SCHEMA can be set to a schema that doesn't currently occur in the database. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.Therefore, you can assign a DEFAULT_SCHEMA to a user before that schema is created.

No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.DEFAULT_SCHEMA can't be specified for a user who is mapped to a certificate, or an asymmetric key.

Importante

El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin.The value of DEFAULT_SCHEMA is ignored if the user is a member of the sysadmin fixed server role. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo.All members of the sysadmin fixed server role have a default schema of dbo.

La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente.The WITH LOGIN clause enables the remapping of a user to a different login. 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.Users without a login, users mapped to a certificate, or users mapped to an asymmetric key can't be remapped with this clause. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows.Only SQL users and Windows users (or groups) can be remapped. 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 ServerSQL Server.The WITH LOGIN clause can't be used to change the type of user, such as changing a Windows account to a SQL ServerSQL Server login.

El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.The name of the user will be automatically renamed to the login name if the following conditions are true.

  • No se ha especificado ningún nombre nuevo.No new name was specified.

  • El nombre actual difiere del nombre de inicio de sesión.The current name differs from the login name.

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.Otherwise, the user won't be renamed unless the caller additionally invokes the NAME clause.

El nombre de un usuario asignado a un inicio de sesión de SQL ServerSQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).The name of a user mapped to a SQL ServerSQL Server login, a certificate, or an asymmetric key can't contain the backslash character (\).

Precaución

El comportamiento de los esquemas cambió en SQL Server 2005.Beginning with SQL Server 2005, the behavior of schemas changed. 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.As a result, code that assumes that schemas are equivalent to database users may no longer return correct results. 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.Old catalog views, including sysobjects, should not be used in a database in which any of the following DDL statements have ever been used: 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.In such databases you must instead use the new catalog views. 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.The new catalog views take into account the separation of principals and schemas that was introduced in SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).For more information about catalog views, see Catalog Views (Transact-SQL).

SeguridadSecurity

Nota

Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario.A user who has ALTER ANY USER permission can change the default schema of any user. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.A user who has an altered schema might unknowingly select data from the wrong table or execute code from the wrong schema.

PermisosPermissions

Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.To change the name of a user requires the ALTER ANY USER permission.

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.To change the target login of a user requires the CONTROL permission on the database.

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.To change the user name of a user having CONTROL permission on the database requires the CONTROL permission on the database.

Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario.To change the default schema or language requires ALTER permission on the user. Los usuarios pueden cambiar el idioma y el esquema predeterminados.Users can change their own default schema or language.

EjemplosExamples

Todos los ejemplos se ejecutan en una base de datos de usuario.All examples are executed in a user database.

A.A. Cambiar el nombre de usuario de una base de datosChanging the name of a database user

En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5 a Mary51.The following example changes the name of the database user Mary5 to Mary51.

ALTER USER Mary5 WITH NAME = Mary51;
GO

B.B. Cambiar el esquema predeterminado de un usuarioChanging the default schema of a user

En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51 a Purchasing.The following example changes the default schema of the user Mary51 to Purchasing.

ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO

Consulte tambiénSee also