ALTER USER (Transact-SQL)
Cambia el nombre de un usuario de base de datos o cambia su esquema predeterminado.
Convenciones de sintaxis de Transact-SQL
Nota:
Microsoft Entra ID era conocido anteriormente como Azure Active Directory (Azure AD).
Selección de un producto
En la fila siguiente, seleccione el nombre del producto que le interese; de esta manera, solo se mostrará la información de ese producto.
* SQL Server *
SQL Server
Sintaxis
-- Syntax for SQL Server
ALTER USER userName
WITH <set_item> [ ,...n ]
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Argumentos
userName especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = loginName reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.
PASSWORD = 'password' Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.
Especifica la contraseña del usuario que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.
Nota:
Esta opción solo está disponible para los usuarios contenidos. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD ='oldpassword'Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database.
La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.
Nota:
Esta opción solo está disponible para los usuarios contenidos.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }Se aplica a: SQL Server 2012 (11.x) y versiones posteriores.
Especifica el idioma predeterminado que debe asignarse al usuario. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.
Nota:
Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database.
Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.
Advertencia
Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.
Observaciones
El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.
Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.
No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.
Importante
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo
.
Solo puede cambiar el nombre de un usuario que está asignado a un grupo o inicio de sesión de Windows cuando el SID del nuevo nombre de usuario coincide con el SID registrado en la base de datos. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.
La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de SQL Server.
Puede originarse un SID no coincidente cuando se ha restaurado una base de datos de otro servidor y se ha asignado un usuario de base de datos a un inicio de sesión de SQL Server. Puede usar la cláusula WITH LOGIN para corregir esta situación reemplazando el SID de usuario de la base de datos por el SID de inicio de sesión del servidor.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
El usuario es un usuario de Windows.
El nombre es un nombre de Windows (contiene una barra diagonal inversa).
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
Precaución
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).
Seguridad
Nota:
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
Permisos
Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.
Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.
Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.
Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Cambiar varias opciones a la vez
En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.
Válido para : SQL Server 2012 (11.x) y versiones posteriores.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO
D. Corrección de un SID no coincidente
En el ejemplo siguiente se corrige el SID del usuario de la base de datos para que coincida con el SID del servidor para un inicio de sesión de SQL Server autenticado.
ALTER USER Mai
WITH LOGIN = Mai;
GO
Consulte también
* Azure SQL Database y SQL Database en Fabric *
Azure SQL Database y SQL Database en Microsoft Fabric
Sintaxis
Sintaxis para Azure SQL Database
-- 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
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
[;]
Argumentos
userName
Especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = loginName
Reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.
NAME = newUserName
Especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schemaName | NULL }
Especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.
PASSWORD = 'password'
Se aplica a: SQL 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 Database.
La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.
Nota:
Esta opción solo está disponible para los usuarios contenidos.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database
Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.
Advertencia
Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.
Observaciones
El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.
Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.
No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.
Importante
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo
.
Solo puede cambiar el nombre de un usuario que está asignado a un grupo o inicio de sesión de Windows cuando el SID del nuevo nombre de usuario coincide con el SID registrado en la base de datos. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.
La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de SQL Server.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
El usuario es un usuario de Windows.
El nombre es un nombre de Windows (contiene una barra diagonal inversa).
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
Precaución
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).
Seguridad
Nota:
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
Permisos
Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.
Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.
Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.
Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Cambiar varias opciones a la vez
En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per';
GO
Consulte también
* SQL Managed Instance *
Azure SQL Managed Instance
Sintaxis
Importante
Solo se admiten las siguientes opciones para Azure SQL Instancia administrada al aplicar a los usuarios con inicios de sesión de Microsoft Entra: DEFAULT_SCHEMA = { schemaName | NULL }
y DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
hay una nueva extensión de sintaxis que se agregó para ayudar a reasignar usuarios de una base de datos que se migró a Azure SQL Instancia administrada. La sintaxis ALTER USER ayuda a asignar usuarios de base de datos en un dominio federado y sincronizado con microsoft Entra ID, a inicios de sesión de Microsoft Entra.
-- Syntax for SQL Managed Instance
ALTER USER userName
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| PASSWORD = 'password' [ OLD_PASSWORD = 'oldpassword' ]
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
-- Users or groups that are migrated as federated and synchronized with Azure AD have the following syntax:
/** Applies to Windows users that were migrated and have the following user names:
- Windows user <domain\user>
- Windows group <domain\MyWindowsGroup>
- Windows alias <MyWindowsAlias>
**/
ALTER USER userName
{ WITH <set_item> [ ,...n ] | FROM EXTERNAL PROVIDER }
[;]
<set_item> ::=
NAME = newUserName
| DEFAULT_SCHEMA = { schemaName | NULL }
| LOGIN = loginName
| DEFAULT_LANGUAGE = { NONE | <lcid> | <language name> | <language alias> }
Argumentos
userName especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = loginName reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.
NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.
PASSWORD = 'password'
Especifica la contraseña del usuario que se está cambiando. En las contraseñas se distingue entre mayúsculas y minúsculas.
Nota:
Esta opción solo está disponible para los usuarios contenidos. Para más información, vea Bases de datos independientes y sp_migrate_user_to_contained (Transact-SQL).
OLD_PASSWORD = 'oldpassword'
La contraseña de usuario actual que se reemplazará por 'password'. En las contraseñas se distingue entre mayúsculas y minúsculas. Para cambiar una contraseña se pide OLD_PASSWORD, a menos que tenga el permiso ALTER ANY USER. Al pedir que se especifique OLD_PASSWORD, se impide que los usuarios con el permiso IMPERSONATION puedan cambiar la contraseña.
Nota:
Esta opción solo está disponible para los usuarios contenidos.
DEFAULT_LANGUAGE ={ NONE | <lcid> | <language name> | <language alias> }
Especifica el idioma predeterminado que debe asignarse al usuario. Si esta opción se establece en NONE, el idioma predeterminado se establece en el de la base de datos. Si el idioma predeterminado de la base de datos se cambia más tarde, el idioma predeterminado del usuario no se modificará. DEFAULT_LANGUAGE puede ser el identificador local (lcid), el nombre del idioma o el alias del idioma.
Nota:
Esta opción solo se puede especificar en una base de datos independiente y solo para los usuarios independientes.
ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ]
Suprime las comprobaciones de metadatos criptográficos en el servidor en operaciones de copia masiva. De esta manera, el usuario puede copiar los datos de forma masiva entre tablas o bases de datos, sin descifrar los datos. El valor predeterminado es OFF.
Advertencia
Si esta opción no se utiliza adecuadamente, pueden dañarse los datos. Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.
Observaciones
El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.
Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.
No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.
Importante
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo
.
Solo puede cambiar el nombre de un usuario que está asignado a un grupo o inicio de sesión de Windows cuando el SID del nuevo nombre de usuario coincide con el SID registrado en la base de datos. Esta comprobación ayuda a evitar la suplantación de inicios de sesión de Windows en la base de datos.
La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de SQL Server. La única excepción es cuando se cambia un usuario de Windows a un usuario de Microsoft Entra.
Nota:
Las siguientes reglas no se aplican a los usuarios de Windows en Azure SQL Managed Instance, ya que no se admite la creación de inicios de sesión de Windows en dicho servicio. La opción WITH LOGIN solo se puede usar si los inicios de sesión de Microsoft Entra están presentes.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
El usuario es un usuario de Windows.
El nombre es un nombre de Windows (contiene una barra diagonal inversa).
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
Precaución
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).
Comentarios para usuarios de Windows en SQL en el entorno local migrados a Azure SQL Managed Instance
Estos comentarios se aplican a la autenticación como usuarios de Windows que se han federado y sincronizado con el identificador de Microsoft Entra.
- La validación de usuarios o grupos de Windows asignados a Microsoft Entra ID se realiza de forma predeterminada a través de Graph API en todas las versiones de la sintaxis ALTER USER usada para la migración.
- Los usuarios locales con alias (use un nombre diferente de la cuenta de Windows original) conservarán el nombre con alias.
- Para la autenticación de Microsoft Entra, el parámetro LOGIN solo se aplica a Azure SQL Instancia administrada y no se puede usar con SQL Database.
- Para ver los inicios de sesión de las entidades de seguridad de Microsoft Entra, use el siguiente comando:
select * from sys.server_principals
.
- Compruebe que el tipo indicado del inicio de sesión sea
E
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.
- Una nueva extensión de sintaxis, FROM EXTERNAL PROVIDER está disponible para modificar usuarios y grupos de Windows de SQL local a usuarios y grupos de Microsoft Entra. El dominio de Windows debe estar federado con el identificador de Entra de Microsoft y todos los miembros del dominio de Windows deben existir en microsoft Entra ID al usar esta extensión. La sintaxis FROM EXTERNAL PROVIDER se aplica a Azure SQL Instancia administrada y debe usarse en caso de que los usuarios de Windows no tengan inicios de sesión en la instancia de SQL original y deban asignarse a usuarios independientes de la base de datos de Microsoft Entra.
- En este caso, el valor userName permitido puede ser:
- Un usuario de Windows (domain\user).
- Un grupo de Windows (MyWidnowsGroup).
- Un alias de Windows (MyWindowsAlias).
- El resultado del comando ALTER reemplaza el nombredeusuario antiguo por el nombre correspondiente que se encuentra en el identificador de Entra de Microsoft basado en el SID original del nombredeusuario antiguo. El nombre modificado se sustituye y almacena en los metadatos de la base de datos:
- (dominio\usuario) se reemplazará por Microsoft Entra user@domain.com.
- (domain\MyWidnowsGroup) se reemplazará por el grupo Microsoft Entra.
- (MyWindowsAlias) permanecerá sin cambios, pero el SID de este usuario se comprobará en microsoft Entra ID.
Nota:
Si no se encuentra el SID del usuario original convertido en objectID en Microsoft Entra ID, se producirá un error en el comando ALTER USER.
- Para ver los usuarios modificados, use el siguiente comando:
select * from sys.database_principals
. - Compruebe el tipo indicado por el usuario
E
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 identificador de Microsoft Entra y solo puede ser:
- El nombre de LOGIN.
- Alias: el nombre no puede existir en microsoft Entra ID.
- En todos los demás casos, se producirá un error en la sintaxis.
Seguridad
Nota:
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
Permisos
Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.
Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.
Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.
Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
C. Cambiar varias opciones a la vez
En el siguiente ejemplo se cambian varias opciones para un usuario de base de datos independiente en una instrucción.
ALTER USER Philip
WITH NAME = Philipe
, DEFAULT_SCHEMA = Development
, PASSWORD = 'W1r77TT98%ab@#' OLD_PASSWORD = 'New Devel0per'
, DEFAULT_LANGUAGE= French ;
GO
D. Asignar el usuario de la base de datos a un inicio de sesión de Microsoft Entra después de la migración
En el ejemplo siguiente se vuelve a asignar el usuario a westus/joe
un usuario de Microsoft Entra, joe@westus.com
. Este ejemplo es para los inicios de sesión ya existentes en la instancia administrada. Esto debe realizarse después de haber completado una migración de base de datos a Azure SQL Instancia administrada y desea usar el inicio de sesión de Microsoft Entra para autenticarse.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com]
E. Asignación de un usuario antiguo de Windows en la base de datos sin inicio de sesión en Azure SQL Instancia administrada a un usuario de Microsoft Entra
En el ejemplo siguiente se vuelve a asignar el usuario, westus/joe
sin un inicio de sesión, a un usuario de Microsoft Entra, joe@westus.com
. El usuario federado debe existir en microsoft Entra ID.
ALTER USER [westus/joe] FROM EXTERNAL PROVIDER
F. Asignación del alias de usuario a un inicio de sesión de Microsoft Entra existente
En el ejemplo siguiente se reasigna el nombre de usuario westus\joe
a joe_alias
. El inicio de sesión de Microsoft Entra correspondiente en este caso es joe@westus.com
.
ALTER USER [westus/joe] WITH LOGIN = [joe@westus.com], name= joe_alias
G. Asignación de un grupo de Windows que se migró en Azure SQL Instancia administrada a un grupo de Microsoft Entra
En el ejemplo siguiente se vuelve a asignar el grupo local anterior a westus\mygroup
un grupo mygroup
de Microsoft Entra en la instancia administrada. El grupo debe existir en el identificador de Entra de Microsoft.
ALTER USER [westus\mygroup] WITH LOGIN = mygroup
Consulte también
* Azure Synapse
Analytics *
Azure Synapse Analytics
Sintaxis
-- Syntax for Azure Synapse
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| LOGIN = loginName
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
userName especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = loginName reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.
NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.
Observaciones
El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.
Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.
No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.
Importante
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo
.
La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de SQL Server.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
Precaución
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).
Seguridad
Nota:
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
Permisos
Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.
Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.
Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.
Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO
Consulte también
* Analytics
Platform System (PDW) *
Sistema de la plataforma de análisis
Sintaxis
-- Syntax for Analytics Platform System
ALTER USER userName
WITH <set_item> [ ,...n ]
<set_item> ::=
NAME = newUserName
| LOGIN = loginName
| DEFAULT_SCHEMA = schema_name
[;]
Argumentos
userName especifica el nombre por el que se identifica al usuario en esta base de datos.
LOGIN = loginName reasigna un usuario a otro inicio de sesión cambiando el identificador de seguridad (SID) del usuario para que coincida con el SID de inicio de sesión.
Si la instrucción ALTER USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción ALTER USER no es la única instrucción en un lote SQL ni se ejecuta en SQL dinámico, la cláusula WITH LOGIN no se admite.
NAME = newUserName especifica el nuevo nombre de este usuario. newUserName no debe existir en la base de datos actual.
DEFAULT_SCHEMA = { schemaName | NULL } especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario. El establecimiento del esquema predeterminado en NULL quita un esquema predeterminado de un grupo de Windows. La opción NULL no se puede utilizar con un usuario de Windows.
Observaciones
El esquema predeterminado será el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos. A menos que se especifique lo contrario, el esquema predeterminado será el propietario de los objetos creados por este usuario de base de datos.
Si el usuario tiene un esquema predeterminado, se utilizará dicho esquema. Si el usuario no tiene un esquema predeterminado, pero es miembro de un grupo con un esquema predeterminado, se utilizará el esquema predeterminado del grupo. Si el usuario no tiene un esquema predeterminado y es miembro de varios grupos, el esquema predeterminado para el usuario será el del grupo de Windows con el principal_id mínimo y un esquema predeterminado establecido explícitamente. Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. Por tanto, puede asignar un DEFAULT_SCHEMA a un usuario antes de crear el esquema.
No se puede especificar DEFAULT_SCHEMA para un usuario asignado a un certificado o una clave asimétrica.
Importante
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro del rol fijo de servidor sysadmin. Todos los miembros del rol fijo de servidor sysadmin tienen un esquema predeterminado dbo
.
La cláusula WITH LOGIN habilita la reasignación de un usuario a un inicio de sesión diferente. Los usuarios sin inicio de sesión, los usuarios asignados a un certificado y los usuarios asignados a una clave asimétrica no se pueden reasignar con esta cláusula. Solo se pueden reasignar usuarios de SQL y usuarios (o grupos) de Windows. La cláusula WITH LOGIN no se puede utilizar para cambiar el tipo de usuario, como cambiar una cuenta de Windows a un inicio de sesión de SQL Server.
El nombre del usuario se cambiará automáticamente por el nombre de inicio de sesión si se cumplen las condiciones siguientes.
No se ha especificado ningún nombre nuevo.
El nombre actual difiere del nombre de inicio de sesión.
En caso contrario, no se cambiará el nombre del usuario a menos que el autor de las llamadas invoque también la cláusula NAME.
El nombre de un usuario asignado a un inicio de sesión de SQL Server, un certificado o una clave asimétrica no puede contener el carácter de la barra diagonal inversa (\).
Precaución
El comportamiento de los esquemas cambió en SQL Server 2005. En consecuencia, el código que supone que los esquemas son equivalentes a los usuarios de base de datos puede dejar de devolver resultados correctos. Las antiguas vistas de catálogo, incluida sysobjects, no se deben usar en una base de datos en la que se haya utilizado alguna vez cualquiera de las siguientes instrucciones DDL: CREATE SCHEMA, ALTER SCHEMA, DROP SCHEMA, CREATE USER, ALTER USER, DROP USER, CREATE ROLE, ALTER ROLE, DROP ROLE, CREATE APPROLE, ALTER APPROLE, DROP APPROLE, ALTER AUTHORIZATION. En esas bases de datos, debe usar las nuevas vistas de catálogo. En las nuevas vistas de catálogo se tiene en cuenta la separación de entidades de seguridad y esquemas que se estableció en SQL Server 2005. Para obtener más información sobre las vistas de catálogo, vea Vistas de catálogo (Transact-SQL).
Seguridad
Nota:
Un usuario que tenga permiso ALTER ANY USER puede cambiar el esquema predeterminado de cualquier usuario. Un usuario que tenga un esquema modificado podría seleccionar datos de la tabla incorrecta o ejecutar código del esquema incorrecto sin saberlo.
Permisos
Para cambiar el nombre de un usuario se necesita el permiso ALTER ANY USER en la base de datos.
Para cambiar la información de inicio de sesión de destino de un usuario, es necesario contar con el permiso CONTROL en la base de datos.
Para cambiar el nombre de usuario de un usuario con el permiso CONTROL en la base de datos, se necesita el permiso CONTROL en la base de datos.
Para cambiar el idioma o el esquema predeterminado, se necesita el permiso ALTER en el usuario. Los usuarios pueden cambiar el idioma y el esquema predeterminados.
Ejemplos
Todos los ejemplos se ejecutan en una base de datos de usuario.
A. Cambiar el nombre de usuario de una base de datos
En el ejemplo siguiente se cambia el nombre del usuario de la base de datos Mary5
a Mary51
.
ALTER USER Mary5 WITH NAME = Mary51;
GO
B. Cambiar el esquema predeterminado de un usuario
En el ejemplo siguiente se cambia el esquema predeterminado del usuario de Mary51
a Purchasing
.
ALTER USER Mary51 WITH DEFAULT_SCHEMA = Purchasing;
GO