CREATE USER (Transact-SQL)
Agrega un usuario a la base de datos actual.
Si se omite FOR LOGIN, el nuevo usuario de base de datos se asignará al inicio de sesión de SQL Server con el mismo nombre.
Si DEFAULT_SCHEMA se deja sin definir, el usuario de base de datos utilizará dbo como su esquema predeterminado. DEFAULT_SCHEMA puede establecerse en un esquema que no existe actualmente en la base de datos. 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 grupo de Windows, un certificado o una clave asimétrica.
Importante
|
|---|
|
El valor de DEFAULT_SCHEMA se omite si el usuario es un miembro de la función fija del servidor sysadmin. Todos los miembros de la función fija del servidor sysadmin tienen un esquema predeterminado de dbo. |
La cláusula WITHOUT LOGIN crea un usuario que no se asigna a un inicio de sesión de SQL Server. Este usuario puede conectarse a otras bases de datos como guest.
Los nombres de usuarios que se asignan a inicios de sesión de SQL Server, certificados o claves asimétricas no pueden contener el carácter 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 acerca de los usuarios de base de datos en la vista de catálogo sys.database_principals.
Advertencia |
|---|
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). |
A. Crear un usuario de base de datos
En el siguiente ejemplo, primero se crea un inicio de sesión de servidor denominado AbolrousHazem con una contraseña y, a continuación, se crea el usuario de base de datos AbolrousHazem correspondiente en AdventureWorks.
CREATE LOGIN AbolrousHazem
WITH PASSWORD = '340$Uuxwp7Mcxo7Khy';
USE AdventureWorks;
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 AdventureWorks;
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.
USE AdventureWorks;
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 AdventureWorks ; 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
