CREATE USER (Transact-SQL)
Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW) Base de datos SQL de Microsoft Fabric
Agrega un usuario a la base de datos actual. Los 13 tipos de usuarios se enumeran con un ejemplo de la sintaxis más básica:
Nota:
Aunque Microsoft Entra ID es el nuevo nombre de Azure Active Directory (Azure AD), para evitar interrumpir los entornos existentes, Azure AD sigue estando en algunos elementos codificados de forma rígida como campos de interfaz de usuario, proveedores de conexiones, códigos de error y cmdlets. En este artículo, los dos nombres son intercambiables.
Usuarios basados en inicios de sesión en master
Usuario basado en un inicio de sesión basado en un grupo de Windows Active Directory.
CREATE USER [Contoso\Fritz];
Usuario basado en un inicio de sesión basado en un grupo de Windows.
CREATE USER [Contoso\Sales];
Usuario basado en un inicio de sesión mediante autenticación de SQL Server.
CREATE USER Mary;
Usuario basado en un inicio de sesión de Microsoft Entra.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com]
Nota:
Las entidades de seguridad (inicios de sesión) de Microsoft Entra server se encuentran actualmente en versión preliminar pública para Azure SQL Database.
Nota:
Los inicios de sesión y, por tanto, los usuarios basados en inicios de sesión, no se admiten en SQL Database en Microsoft Fabric.
Usuarios que se autentican en la base de datos: se recomienda para ayudar a que la base de datos sea más portable.
Siempre se admite en SQL Database. Solo se admite en una base de datos independiente en SQL Server.
Usuario basado en un usuario de Windows sin inicio de sesión.
CREATE USER [Contoso\Fritz];
Usuario basado en un grupo de Windows sin inicio de sesión.
CREATE USER [Contoso\Sales];
Usuario de SQL Database o Azure Synapse Analytics basado en un usuario de Microsoft Entra.
CREATE USER [Fritz@contoso.com] FROM EXTERNAL PROVIDER;
Usuario de base de datos independiente con contraseña. (No está disponible en Azure Synapse Analytics).
CREATE USER Mary WITH PASSWORD = '********';
Usuarios basados en entidades de seguridad de Windows que conectan a través de inicios de sesión de grupo de Windows
Usuario basado en un usuario de Windows sin inicio de sesión, pero que se puede conectar a Motor de base de datos mediante la pertenencia a un grupo de Windows.
CREATE USER [Contoso\Fritz];
Usuario basado en un grupo de Windows sin inicio de sesión, pero que se puede conectar a Motor de base de datos mediante la pertenencia a un grupo distinto de Windows.
CREATE USER [Contoso\Fritz];
Usuarios que no se pueden autenticar : estos usuarios no pueden iniciar sesión en SQL Server o SQL Database.
- Usuario sin inicio de sesión. No se puede iniciar sesión, pero se pueden conceder permisos.
CREATE USER CustomApp WITHOUT LOGIN;
- Usuario basado en un certificado. No se puede iniciar sesión, pero se pueden conceder permisos y puede firmar módulos.
CREATE USER TestProcess FOR CERTIFICATE CarnationProduction50;
- Usuario basado en una clave asimétrica. No se puede iniciar sesión, pero se pueden conceder permisos y puede firmar módulos.
CREATE User TestProcess FROM ASYMMETRIC KEY PacificSales09;
Convenciones de sintaxis de Transact-SQL
Sintaxis
Sintaxis para SQL Server, Azure SQL Database y Azure SQL Managed Instance
-- Syntax Users based on logins in master
CREATE USER user_name
[
{ FOR | FROM } LOGIN login_name
]
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that authenticate at the database
CREATE USER
{
windows_principal [ WITH <options_list> [ ,... ] ]
| user_name WITH PASSWORD = 'password' [ , <options_list> [ ,... ]
| Microsoft_Entra_principal FROM EXTERNAL PROVIDER [WITH OBJECT_ID = 'objectid']
}
[ ; ]
-- Users based on Windows principals that connect through Windows group logins
CREATE USER
{
windows_principal [ { FOR | FROM } LOGIN windows_principal ]
| user_name { FOR | FROM } LOGIN windows_principal
}
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{
WITHOUT LOGIN [ WITH <limited_options_list> [ ,... ] ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| SID = sid
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name ]
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
-- SQL Database syntax when connected to a federation member
CREATE USER user_name
[;]
-- Syntax for users based on Microsoft Entra logins for Azure SQL Managed Instance
CREATE USER user_name
[ { FOR | FROM } LOGIN login_name ]
| FROM EXTERNAL PROVIDER
[ WITH <limited_options_list> [ ,... ] ]
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| DEFAULT_LANGUAGE = { NONE | lcid | language name | language alias }
| ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = [ ON | OFF ] ]
Sintaxis de Azure Synapse Analytics
CREATE USER user_name
[ { { FOR | FROM } { LOGIN login_name }
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
CREATE USER Microsoft_Entra_principal FROM EXTERNAL PROVIDER
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Sintaxis para la base de datos SQL en Microsoft Fabric
CREATE USER
{
Microsoft_Entra_principal FROM EXTERNAL PROVIDER [ WITH <limited_options_list> [ ,... ] ]
| Microsoft_Entra_principal WITH <options_list> [ ,... ]
}
[ ; ]
-- Users that cannot authenticate
CREATE USER user_name
{ WITHOUT LOGIN [ WITH DEFAULT_SCHEMA = schema_name ]
| { FOR | FROM } CERTIFICATE cert_name
| { FOR | FROM } ASYMMETRIC KEY asym_key_name
}
[ ; ]
<limited_options_list> ::=
DEFAULT_SCHEMA = schema_name
| OBJECT_ID = 'objectid'
<options_list> ::=
DEFAULT_SCHEMA = schema_name
| SID = sid
| TYPE = { X | E }
Sintaxis para almacenamiento de datos paralelos
CREATE USER user_name
[ { { FOR | FROM }
{
LOGIN login_name
}
| WITHOUT LOGIN
]
[ WITH DEFAULT_SCHEMA = schema_name ]
[;]
Argumentos
user_name
Especifica el nombre por el que se identifica al usuario en esta base de datos. user_name es sysname. Puede tener una longitud máxima de 128 caracteres. Cuando se crea un usuario basado en una entidad de seguridad de Windows, el nombre de esta entidad se convierte en el nombre de usuario a menos que se especifique otro nombre de usuario.
LOGIN login_name
Especifica el inicio de sesión para el que se crea el usuario de base de datos. login_name debe ser un inicio de sesión válido en el servidor. Puede ser un inicio de sesión basado en una entidad de seguridad de Windows (usuario o grupo), un inicio de sesión mediante la autenticación de SQL Server o un inicio de sesión mediante una entidad de seguridad de Microsoft Entra (usuario, grupo o aplicación). Cuando este inicio de sesión de SQL Server accede a la base de datos, adquiere el nombre y el identificador del usuario de la base de datos que se está creando. Cuando cree un inicio de sesión asignado a una entidad de seguridad de Windows, use el formato [<domainName>\<loginName>]. Para obtener ejemplos, vea Resumen de la sintaxis.
Si la instrucción CREATE USER es la única instrucción en un lote SQL, Azure SQL Database admite la cláusula WITH LOGIN. Si la instrucción CREATE 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.
WITH DEFAULT_SCHEMA = schema_name
Especifica el primer esquema donde buscará el servidor cuando resuelva los nombres de objetos de este usuario de base de datos.
'windows_principal'
Especifica la entidad de seguridad de Windows para la que se crea el usuario de base de datos. windows_principal puede ser un usuario de Windows o un grupo de Windows. El usuario se creará aunque el parámetro windows_principal no disponga de inicio de sesión. Cuando se conecte a SQL Server, si el parámetro windows_principal no dispone de inicio de sesión, la entidad de seguridad de Windows se debe autenticar en el Motor de base de datos mediante la pertenencia a un grupo de Windows que disponga de inicio de sesión o la cadena de conexión debe especificar la base de datos independiente como el catálogo inicial. Al crear un usuario desde una entidad de seguridad de Windows, use el formato [<domainName>\<loginName>]. Para obtener ejemplos, vea Resumen de la sintaxis. Los usuarios basados en usuarios de Active Directory se limitan a nombres de menos de 21 caracteres.
"Microsoft_Entra_principal"
Se aplica a: SQL Database, SQL Instancia administrada, Azure Synapse Analytics, SQL Database en Microsoft Fabric
Especifica la entidad de seguridad de Microsoft Entra para la que se va a crear el usuario de la base de datos. El Microsoft_Entra_principal puede ser un usuario de Microsoft Entra, un grupo de Microsoft Entra o una aplicación de Microsoft Entra. (Los usuarios de Microsoft Entra no pueden tener inicios de sesión de autenticación de Windows en SQL Database; solo los usuarios de la base de datos). El cadena de conexión debe especificar la base de datos independiente como catálogo inicial.
Para las entidades de seguridad de Microsoft Entra, la sintaxis CREATE USER requiere:
UserPrincipalName del objeto Microsoft Entra para usuarios de Microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
CREATE USER [alice@fabrikam.onmicrosoft.com] FROM EXTERNAL PROVIDER;
Las entidades de seguridad (inicios de sesión) de Microsoft Entra server presentan la creación de usuarios asignados a inicios de sesión de Microsoft Entra en la base de datos virtual
master
. Por ejemplo:CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
No se admiten usuarios y entidades de servicio (aplicaciones) de Microsoft Entra que sean miembros de más de 2048 grupos de seguridad de Microsoft Entra para iniciar sesión en bases de datos en Azure SQL Database, Azure SQL Instancia administrada o Azure Synapse.
DisplayName del objeto Microsoft Entra para grupos de Microsoft Entra y Aplicaciones de Microsoft Entra. Si tuviera el grupo de seguridad Enfermeras, utilizaría:
CREATE USER [Nurses] FROM EXTERNAL PROVIDER;
Para obtener más información, consulte Conexión a SQL Database mediante la autenticación de Microsoft Entra.
WITH PASSWORD = 'password'
Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database
Solo se puede usar en una base de datos independiente. Especifica la contraseña del usuario que se está creando. A partir de SQL Server 2012 (11.x), la información de la contraseña almacenada se calcula con las funciones SHA-512 de la contraseña salada.
WITHOUT LOGIN
Especifica que el usuario no se debe asignar a ningún inicio de sesión existente.
CERTIFICATE cert_name
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores, SQL Database, SQL Database en Microsoft Fabric
Especifica el certificado del usuario de la base de datos que se crea.
ASYMMETRIC KEY asym_key_name
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores, SQL Database, SQL Database en Microsoft Fabric
Especifica la clave asimétrica del usuario de la base de datos que se crea.
DEFAULT_LANGUAGE = { NONE | <lcid> | <nombre de idioma> | <alias de idioma> }
Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, SQL Database
Especifica el idioma predeterminado del nuevo usuario. Si se especifica un idioma predeterminado para el usuario y el idioma de la base de datos se cambia posteriormente, el idioma predeterminado de los usuarios se mantiene como se especificó. Si no se especifica ningún idioma predeterminado, el idioma predeterminado del usuario será el idioma predeterminado de la base de datos. Si no se especificó ningún idioma predeterminado para el usuario y el idioma predeterminado de la base de datos se cambia posteriormente, el idioma predeterminado del usuario se cambiará al nuevo idioma predeterminado de la base de datos.
Importante
DEFAULT_LANGUAGE solo se usa para un usuario de base de datos independiente.
SID = sid
Se aplica a: SQL Server 2012 (11.x) y versiones posteriores, y a la base de datos SQL en Microsoft Fabric.
En SQL Server 2012 (11.x) y versiones posteriores, solo se aplica a los usuarios con contraseñas (autenticación de SQL Server) en una base de datos independiente. Especifica el SID de la base de datos. Si esta opción no se selecciona, SQL Server asigna automáticamente un SID. Utilice el parámetro SID para crear usuarios en varias bases de datos que tienen la misma identidad (SID). Esto es útil para crear usuarios de varias bases de datos y preparar la conmutación por error de Always On. Para determinar el SID de un usuario, consulte sys.database_principals.
En la base de datos SQL de Microsoft Fabric, sid
debe ser un identificador válido de la entidad de seguridad de Microsoft Entra especificada. Si la entidad de seguridad es un usuario o un grupo, el identificador debe ser un identificador de objeto de Microsoft Entra del usuario o grupo. Si la entidad de seguridad de Microsoft Entra es una entidad de servicio (una aplicación o una identidad administrada), el identificador debe ser un identificador de aplicación (o un identificador de cliente). El identificador especificado debe ser un binary(16)
valor. El Motor de base de datos no valida el identificador especificado en Microsoft Entra. El SID
argumento debe usarse junto con TYPE
.
TYPE = [ E | X ]
Se aplica a: BASE de datos SQL en Microsoft Fabric.
Especifica el tipo de una entidad de seguridad de Microsoft Entra. E
indica que la entidad de seguridad es un usuario o una entidad de servicio (una aplicación o una identidad administrada). X
indica que la entidad de seguridad es un grupo.
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.
FROM EXTERNAL PROVIDER
Se aplica a: SQL Database, Azure SQL Instancia administrada, SQL Database en Microsoft Fabric
Especifica que la entidad de seguridad es para la autenticación de Microsoft Entra. SQL Server valida automáticamente el nombre principal proporcionado en Microsoft Entra.
Si la entidad de seguridad que emite la CREATE USER
instrucción es una entidad de seguridad de usuario de Microsoft Entra, la entidad de seguridad (o el grupo de la entidad de seguridad) debe estar en el rol Lectores de directorio de Microsoft Entra.
En SQL Database y Azure SQL Instancia administrada, si la entidad de seguridad que emite la CREATE USER
instrucción es una entidad de servicio, la identidad del servidor de base de datos o la instancia administrada debe estar en el rol Lectores de directorio de Microsoft Entra.
En la base de datos SQL de Microsoft Fabric, FROM EXTERNAL PROVIDER
no se permite si una entidad de seguridad emisora CREATE USER
es una entidad de servicio en Microsoft Entra. Las entidades de servicio deben usar TYPE
y SID
arugments para crear usuarios para entidades de seguridad de Microsoft Entra.
WITH OBJECT_ID = 'objectid'
Se aplica a: SQL Database, Azure SQL Instancia administrada, SQL Database en Microsoft Fabric
Especifica el identificador de objeto entra de Microsoft. OBJECT_ID
Si se especifica , el user_name puede ser un alias definido por el usuario formado a partir del nombre para mostrar principal original con un sufijo anexado. El user_name debe ser un nombre único en la sys.database_principals
vista y cumplir todas las demás sysname
limitaciones. Para obtener más información sobre el uso de la WITH OBJECT_ID
opción, consulte Inicios de sesión y usuarios de Microsoft Entra con nombres para mostrar no únicos.
Nota:
Si el nombre para mostrar de la entidad de servicio no es un duplicado, se debe usar la instrucción CREATE LOGIN
o CREATE USER
. La WITH OBJECT_ID
extensión es un elemento de reparación de solución de problemas implementado para su uso con entidades de servicio nounique. No se recomienda usarla con una entidad de servicio única. El uso de la extensión WITH OBJECT_ID
para una entidad de servicio sin agregar un sufijo se ejecutará correctamente, pero no será evidente para qué entidad de servicio se creó el inicio de sesión o el usuario. Se recomienda crear un alias mediante un sufijo para identificar de forma única la entidad de servicio. La extensión WITH OBJECT_ID
no se admite para SQL Server.
Comentarios
Si FOR LOGIN
se omite, el nuevo usuario de base de datos se asignará al inicio de sesión de SQL Server con el mismo nombre.
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. (No es posible seleccionar explícitamente uno de los esquemas predeterminados disponibles como esquema preferido). Si no se puede determinar ningún esquema predeterminado para un usuario, se utilizará el esquema dbo.
DEFAULT_SCHEMA puede establecerse antes de crear el esquema que lo señala.
No se puede especificar DEFAULT_SCHEMA cuando se está creando un usuario asignado a un certificado o una clave asimétrica.
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 de dbo
.
La cláusula WITHOUT LOGIN crea un usuario que no se asigna a ningún inicio de sesión de SQL Server. Este usuario puede conectarse a otras bases de datos como guest. Los permisos se pueden asignar a este usuario sin un inicio de sesión y cuando se cambia el contexto de seguridad a un usuario sin un inicio de sesión, los usuarios originales reciben los permisos del usuario sin un inicio de sesión. Vea el ejemplo D. Crear y utilizar un usuario sin inicio de sesión.
Solo los usuarios asignados a entidades de seguridad de Windows pueden contener el carácter de barra diagonal inversa ( \ ).
No se puede utilizar CREATE USER para crear un usuario guest porque el usuario guest ya existe en cada base de datos. Puede habilitar el usuario guest concediéndole el permiso CONNECT como se muestra a continuación:
GRANT CONNECT TO guest;
GO
Puede ver la información sobre los usuarios de bases de datos en la vista de catálogo sys.database_principals.
Use la extensión FROM EXTERNAL PROVIDER
de sintaxis para crear inicios de sesión de Microsoft Entra de nivel de servidor en Azure SQL Database y Azure SQL Instancia administrada. Los inicios de sesión de Microsoft Entra permiten asignar entidades de seguridad de Microsoft Entra de nivel de base de datos a inicios de sesión de Microsoft Entra de nivel de servidor. Para crear un usuario de Microsoft Entra a partir de un inicio de sesión de Microsoft Entra, use la sintaxis siguiente:
CREATE USER [Microsoft_Entra_principal] FROM LOGIN [Microsoft Entra login];
Al crear el usuario en la base de datos de Azure SQL, el login_name debe corresponder a un inicio de sesión de Microsoft Entra existente o, de lo contrario, el uso de la cláusula FROM EXTERNAL PROVIDER solo creará un usuario de Microsoft Entra sin un inicio de sesión en la master
base de datos. Por ejemplo, este comando creará un usuario contenido:
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
Resumen de la sintaxis
Usuarios basados en inicios de sesión en master
En la siguiente lista se muestra la posible sintaxis de los usuarios basados en inicios de sesión. No se citan las opciones de esquema predeterminadas.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
CREATE USER SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FOR LOGIN SQLAUTHLOGIN
CREATE USER SQLAUTHLOGIN FROM LOGIN SQLAUTHLOGIN
Usuarios que se autentican en la base de datos
En la siguiente lista se muestra la posible sintaxis de los usuarios que solo se puede usar en una base de datos independiente. Los usuarios creados no se podrán relacionar con los inicios de sesión en la base de datos maestra. No se muestran las opciones predeterminadas de esquema ni de idioma.
Importante
Esta sintaxis concede acceso a los usuarios a la base de datos, así como nuevo acceso a Motor de base de datos.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER Barry WITH PASSWORD = 'sdjklalie8rew8337!$d'
Usuarios basados en entidades de seguridad de Windows sin inicios de sesión en la base de datos del master
sistema
En la lista siguiente se muestra la sintaxis posible para los usuarios que tienen acceso al Motor de base de datos a través de un grupo de Windows, pero no tienen un inicio de sesión en la base de datos del master
sistema. Esta sintaxis se puede usar en todos los tipos de bases de datos. No se muestran las opciones predeterminadas de esquema ni de idioma.
Esta sintaxis es similar a los usuarios en función de los inicios de sesión de master
, pero esta categoría de usuario no tiene un inicio de sesión en master
. El usuario debe tener acceso a Motor de base de datos mediante un inicio de sesión de grupo de Windows.
Esta sintaxis es similar a la de los usuarios de bases de datos independientes basados en las entidades de seguridad de Windows, pero esta categoría de usuario no obtiene nuevo acceso a Motor de base de datos.
CREATE USER [Domain1\WindowsUserBarry]
CREATE USER [Domain1\WindowsUserBarry] FOR LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsUserBarry] FROM LOGIN Domain1\WindowsUserBarry
CREATE USER [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FOR LOGIN [Domain1\WindowsGroupManagers]
CREATE USER [Domain1\WindowsGroupManagers] FROM LOGIN [Domain1\WindowsGroupManagers]
Usuarios que no se pueden autenticar
En la lista siguiente se muestra la sintaxis posible para los usuarios que no pueden iniciar sesión en SQL Server.
CREATE USER RIGHTSHOLDER WITHOUT LOGIN
CREATE USER CERTUSER FOR CERTIFICATE SpecialCert
CREATE USER CERTUSER FROM CERTIFICATE SpecialCert
CREATE USER KEYUSER FOR ASYMMETRIC KEY SecureKey
CREATE USER KEYUSER FROM ASYMMETRIC KEY SecureKey
Seguridad
Si se crea un usuario, se le concede acceso a una base de datos, pero no se le concede ningún acceso automáticamente a los objetos de una base de datos. Después de crear un usuario, las acciones habituales son agregar usuarios a los roles de base de datos que tienen permiso para acceder a los objetos de base de datos, o bien conceder permisos de objeto al usuario. Para más información acerca de cómo diseñar un sistema de permisos, consulte Getting Started with Database Engine Permissions.
Consideraciones especiales para bases de datos independientes
Al conectarse a una base de datos independiente, si el usuario no tiene un inicio de sesión en la master
base de datos, el cadena de conexión debe incluir el nombre de la base de datos independiente como catálogo inicial. El parámetro de catálogo inicial siempre es necesario para un usuario de base de datos independiente con contraseña.
En una base de datos independiente, la creación de usuarios ayuda a separar la base de datos de la instancia de Motor de base de datos para que la base de datos se pueda mover fácilmente a otra instancia de SQL Server. Para obtener más información, vea Bases de datos independientes y Usuarios de base de datos independiente: hacer que la base de datos sea portátil. Para cambiar un usuario de base de datos de un usuario basado en un inicio de sesión de autenticación de SQL Server a un usuario de base de datos independiente con contraseña, vea sp_migrate_user_to_contained (Transact-SQL).
En una base de datos independiente, los usuarios no tienen que tener inicios de sesión en la master
base de datos. Los administradores del Motor de base de datos deben comprender que el acceso a una base de datos independiente se puede conceder en el nivel de base de datos, en vez de en el nivel de Motor de base de datos. Para más información, vea Security Best Practices with Contained Databases.
Al usar los usuarios de la base de datos independiente de Azure SQL Database, configure el acceso con una regla de firewall de nivel de base de datos en lugar de una regla de firewall de nivel de servidor. Para obtener más información, vea sp_set_database_firewall_rule (Azure SQL Database).
Para los usuarios de base de datos independiente de SQL Server 2022 (16.x), SQL Database, Azure SQL Managed Instance y Azure Synapse Analytics, SSMS puede admitir la autenticación multifactor. Para más información, consulte Uso de la autenticación multifactor de Microsoft Entra.
Permisos
Requiere el permiso ALTER ANY USER en la base de datos.
Permisos para SQL Server 2022 y versiones posteriores
Requiere el permiso CREATE USER en la base de datos.
Ejemplos
A. Crear un usuario de base de datos basado en un inicio de sesión de SQL Server
En el siguiente ejemplo, primero se crea un inicio de sesión de SQL Server denominado AbolrousHazem
y, a continuación, se crea un usuario de base de datos correspondiente AbolrousHazem
en AdventureWorks2022
.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
Cambie a una base de datos de usuario. Por ejemplo, en SQL Server, utilice la instrucción USE AdventureWorks2022
. En Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW), debe realizar una nueva conexión con la base de datos de usuario.
CREATE USER AbolrousHazem FOR LOGIN AbolrousHazem;
GO
B. Crear un usuario de base de datos con un esquema predeterminado
En el siguiente ejemplo, primero se crea un inicio de sesión de servidor denominado WanidaBenshoof
con una contraseña y, a continuación, se crea el usuario de base de datos Wanida
correspondiente con el esquema predeterminado Marketing
.
CREATE LOGIN WanidaBenshoof
WITH PASSWORD = '8fdKJl3$nlNv3049jsKK';
USE AdventureWorks2022;
CREATE USER Wanida FOR LOGIN WanidaBenshoof
WITH DEFAULT_SCHEMA = Marketing;
GO
C. Crear un usuario de base de datos a partir de un certificado
En el siguiente ejemplo, se crea el usuario de base de datos JinghaoLiu
desde el certificado CarnationProduction50
.
Se aplica a: SQL Server 2008 (10.0.x) y versiones posteriores.
USE AdventureWorks2022;
CREATE CERTIFICATE CarnationProduction50
WITH SUBJECT = 'Carnation Production Facility Supervisors',
EXPIRY_DATE = '11/11/2011';
GO
CREATE USER JinghaoLiu FOR CERTIFICATE CarnationProduction50;
GO
D. Crear y utilizar un usuario sin inicio de sesión
En el ejemplo siguiente se crea un usuario de base de datos CustomApp
que no se asigna a un inicio de sesión de SQL Server. A continuación, se concede a un usuario el permiso adventure-works\tengiz0
para suplantar al usuario de CustomApp
.
USE AdventureWorks2022;
CREATE USER CustomApp WITHOUT LOGIN ;
GRANT IMPERSONATE ON USER::CustomApp TO [adventure-works\tengiz0] ;
GO
Para usar las credenciales de CustomApp
, el usuario adventure-works\tengiz0
ejecuta la siguiente instrucción.
EXECUTE AS USER = 'CustomApp' ;
GO
Para revertir a las credenciales de adventure-works\tengiz0
, el usuario ejecuta la siguiente instrucción.
REVERT ;
GO
E. Crear un usuario de base de datos independiente con contraseña
En el siguiente ejemplo se crea un usuario de base de datos independiente con contraseña. Este ejemplo solo se puede ejecutar en una base de datos independiente.
Válido para : SQL Server 2012 (11.x) y versiones posteriores. Este ejemplo funciona en SQL Database si se quita DEFAULT_LANGUAGE.
USE AdventureWorks2022;
GO
CREATE USER Carlo
WITH PASSWORD='RN92piTCh%$!~3K9844 Bl*'
, DEFAULT_LANGUAGE=[Brazilian]
, DEFAULT_SCHEMA=[dbo]
GO
F. Crear un usuario de base de datos independiente para un inicio de sesión de dominio
En el siguiente ejemplo se crea un usuario de base de datos independiente para un inicio de sesión denominado Fritz en un dominio denominado Contoso. Este ejemplo solo se puede ejecutar en una base de datos independiente.
Válido para : SQL Server 2012 (11.x) y versiones posteriores.
USE AdventureWorks2022;
GO
CREATE USER [Contoso\Fritz] ;
GO
G. Crear un usuario de base de datos independiente con un SID específico
En el siguiente ejemplo se crea un usuario de base de datos independiente y autenticado de SQL Server denominado CarmenW. Este ejemplo solo se puede ejecutar en una base de datos independiente.
Válido para : SQL Server 2012 (11.x) y versiones posteriores.
USE AdventureWorks2022;
GO
CREATE USER CarmenW WITH PASSWORD = 'a8ea v*(Rd##+'
, SID = 0x01050000000000090300000063FF0451A9E7664BA705B10E37DDC4B7;
H. Crear un usuario para copiar los datos cifrados
En el siguiente ejemplo se crea un usuario que puede copiar datos protegidos por la característica Always Encrypted de un conjunto de tablas con las columnas cifradas a otro conjunto de tablas con columnas cifradas (en la misma base de datos o en otra diferente). Para obtener más información, vea Migración de datos confidenciales protegidos mediante Always Encrypted.
Se aplica a: SQL Server 2016 (13.x) y versiones posteriores, SQL Database
CREATE USER [Chin]
WITH
DEFAULT_SCHEMA = dbo
, ALLOW_ENCRYPTED_VALUE_MODIFICATIONS = ON ;
I. Creación de un usuario de Microsoft Entra a partir de un inicio de sesión de Microsoft Entra en Azure SQL
Para crear un usuario de Microsoft Entra a partir del inicio de sesión de Microsoft Entra, use la sintaxis siguiente.
Inicie sesión en el servidor lógico en Azure o sql Instancia administrada mediante un inicio de sesión de Microsoft Entra concedido el sysadmin
rol en SQL Instancia administrada o loginmanager
rol en SQL Database. El siguiente script de T-SQL crea un usuario bob@contoso.com
de Microsoft Entra a partir del inicio de sesión bob@contoso.com
. Este inicio de sesión se ha creado en el ejemplo CREATE LOGIN.
CREATE USER [bob@contoso.com] FROM LOGIN [bob@contoso.com];
GO
Importante
Al crear un USUARIO a partir de un inicio de sesión de Microsoft Entra, especifique el user_name que el mismo login_name desde LOGIN.
Se admite la creación de un usuario de Microsoft Entra como grupo a partir de un inicio de sesión de Microsoft Entra que sea un grupo.
CREATE USER [MS Entra group] FROM LOGIN [MS Entra group];
GO
También puede crear un usuario de Microsoft Entra a partir de un inicio de sesión de Microsoft Entra que sea un grupo.
CREATE USER [bob@contoso.com] FROM LOGIN [MS Entra group];
GO
J. Creación de un usuario de base de datos independiente a partir de una entidad de seguridad de Microsoft Entra
La sintaxis siguiente crea un usuario bob@contoso.com
de Microsoft Entra , en una base de datos sin un inicio de sesión asociado en master
. El Motor de base de datos valida que el usuario especificado existe en Microsoft Entra.
CREATE USER [bob@contoso.com] FROM EXTERNAL PROVIDER;
GO
K. Creación de un usuario de base de datos independiente desde una entidad de seguridad de Microsoft Entra sin validación
Se aplica a: BASE de datos SQL en Microsoft Fabric
En los ejemplos de esta sección se crean usuarios de base de datos para entidades de seguridad de Microsoft Entra, sin validar nombres principales en Microsoft Entra.
En el siguiente ejemplo de T-SQL se crea un usuario de base de datos para el usuario de Microsoft Entra, denominado bob@contoso.com
. Reemplace <unique identifier sid>
por el SID del nuevo usuario al identificador de objeto del usuario de Microsoft Entra.
DECLARE @principal_name SYSNAME = 'bob@contoso.com';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- user's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castObjectId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = E;'
EXEC (@cmd);
En el ejemplo siguiente se crea un usuario de base de datos para la entidad de servicio de Microsoft Entra, denominada HRApp
. Reemplace <unique identifier sid>
por el SID del nuevo usuario al identificador de cliente de la entidad de servicio en Microsoft Entra.
DECLARE @principal_name SYSNAME = 'HRApp';
DECLARE @clientId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's client ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castClientId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @clientId), 1);
-- Construct command: CREATE USER [@principal_name] WITH SID = @castClientId, TYPE = E;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castClientId + ', TYPE = E;'
EXEC (@cmd);
En el ejemplo siguiente se crea un usuario de base de datos para el grupo Microsoft Entra, denominado HR
. Reemplace <unique identifier sid>
por el SID del nuevo usuario al identificador de objeto del grupo.
DECLARE @group_name SYSNAME = 'HR';
DECLARE @objectId UNIQUEIDENTIFIER = '<unique identifier sid>'; -- principal's object ID in Microsoft Entra
-- Convert the guid to the right type
DECLARE @castObjectId NVARCHAR(MAX) = CONVERT(VARCHAR(MAX), CONVERT (VARBINARY(16), @objectId), 1);
-- Construct command: CREATE USER [@groupName] WITH SID = @castObjectId, TYPE = X;
DECLARE @cmd NVARCHAR(MAX) = N'CREATE USER [' + @principal_name + '] WITH SID = ' + @castObjectId + ', TYPE = X;'
EXEC (@cmd);
Pasos siguientes
Una vez creado el usuario, considere la posibilidad de agregar el usuario a un rol de base de datos mediante la instrucción ALTER ROLE.
También puede interesarle otorgar permisos de objeto al rol para que pueda acceder a las tablas. Para obtener información general sobre el modelo de seguridad de SQL Server, vea Permisos.
Contenido relacionado
- Crear un usuario de base de datos
- sys.database_principals (Transact-SQL)
- ALTER USER (Transact-SQL)
- DROP USER (Transact-SQL)
- CREATE LOGIN (Transact-SQL)
- EVENTDATA (Transact-SQL)
- Bases de datos independientes
- Conexión a SQL Database mediante la autenticación de Microsoft Entra
- Introducción a los permisos de los motores de bases de datos