sp_grantlogin
Permite a una cuenta de usuario o de grupo de Microsoft® Windows NT® conectar con Microsoft SQL Server™ mediante la autenticación de Windows.
Sintaxis
sp_grantlogin [@loginame =] 'login'
Argumentos
[@loginame =] 'login'
Es el nombre del usuario o grupo de Windows NT que se agrega. El usuario o grupo de Windows NT debe calificarse con un nombre de dominio de Windows NT en la forma Dominio\Usuario, por ejemplo London\Joeb. login es de tipo sysname y no tiene valor predeterminado.
Valores del código de retorno
0 (correcto) o 1 (error)
Observaciones
Puede utilizar sp_grantlogin para invertir los efectos de un sp_denylogin anterior ejecutado para un usuario de Windows NT.
Utilice sp_addlogin para permitir a un inicio de sesión de SQL Server conectar con SQL Server.
Aunque un inicio de sesión puede conectar con SQL Server después de ejecutarse sp_grantlogin, se le denegará el acceso a las bases de datos de usuario hasta que se cree una cuenta de usuario para el inicio de sesión en cada base de datos a la que precise acceso. Utilice sp_grantdbaccess para crear una cuenta de usuario en cada base de datos de usuario.
sp_grantlogin no se puede ejecutar desde una transacción definida por el usuario.
Permisos
Sólo los miembros de las funciones fijas de servidor sysadmin o securityadmin pueden ejecutar sp_grantlogin.
Ejemplos
En este ejemplo se permite al usuario de Windows NT Corporate\BobJ conectar con SQL Server.
EXEC sp_grantlogin 'Corporate\BobJ'
O bien
EXEC sp_grantlogin [Corporate\BobJ]
sp_adduser
Agrega una cuenta de seguridad para un nuevo usuario de la base de datos actual. Este procedimiento se incluye por compatibilidad con versiones anteriores. Utilice en su lugar sp_grantdbaccess.
Sintaxis
sp_adduser [ @loginame = ] 'login'
[ , [ @name_in_db = ] 'user' ]
[ , [ @grpname = ] 'group' ]
Argumentos
[@loginame =] 'login'
Es el nombre de inicio de sesión del usuario. El argumento login es de tipo sysname y no tiene valor predeterminado. login debe ser un inicio de sesión de Microsoft® SQL Server™ o un usuario de Microsoft Windows NT® existente.
[@name_in_db =] 'user'
Es el nombre del nuevo usuario. El argumento user es de tipo sysname y su valor predeterminado es NULL. Si no se especifica user, el nombre del usuario toma el valor de login de forma predeterminada. Al especificar user se da al nuevo usuario un nombre en la base de datos diferente del Id. de inicio de sesión de SQL Server.
[@grpname =] 'group'
Es el grupo o función del que el nuevo usuario forma parte automáticamente. El argumento group es de tipo sysname y su valor predeterminado es NULL. group debe ser un grupo o función válido en la base de datos actual. Microsoft SQL Server versión 7.0 utiliza funciones en vez de grupos.
Valores del código de retorno
0 (correcto) o 1 (error)
Observaciones
Los nombres de usuario de SQL Server pueden contener entre 1 y 128 caracteres y pueden incluir letras, símbolos y números. Sin embargo, los nombres de usuario no pueden:
Contener un carácter de barra diagonal inversa (\).
Ser NULL o una cadena vacía ('').
Después de agregar un usuario, utilice las instrucciones GRANT, DENY y REVOKE para definir los permisos que controlan las actividades del usuario.
Para presentar la lista de los nombres de inicio de sesión válidos, utilice sp_helplogin.
Para presentar la lista de los nombres de función válidos, utilice sp_helprole. Cuando se especifica una función, el usuario obtiene automáticamente los permisos definidos para esa función. Si no se especifica una función, el usuario obtiene los permisos concedidos a la función predeterminada public. Para agregar un usuario a una función, debe especificarse un valor para username (username puede ser el mismo que login_id.)
Para tener acceso a una base de datos, se debe conceder acceso a un inicio de sesión mediante sp_adduser o sp_grantdbaccess, o debe existir la cuenta de seguridad guest en la base de datos.
sp_adduser no se puede ejecutar en una transacción definida por el usuario.
Permisos
Sólo dbo y los miembros de la función fija de servidor sysadmin pueden ejecutar sp_adduser.
Ejemplos
A. Agregar un usuario
Este ejemplo agrega el usuario Victoria a la función fort_mudge existente en la base de datos actual, con el inicio de sesión existente Victoria.
EXEC sp_adduser 'Victoria', 'Victoria', 'fort_mudge'
B. Agregar un nombre de usuario con el mismo Id. de inicio de sesión
Este ejemplo agrega el nombre de usuario predeterminado Margaret a la base de datos actual para el inicio de sesión Margaret, que pertenece a la función predeterminada public.
EXEC sp_adduser 'Margaret'
C. Agregar un usuario que utiliza un nombre de usuario diferente
Este ejemplo agrega el inicio de sesión Haroldq a la base de datos actual con el nombre de usuario Harold, que pertenece a la función fort_mudge.
EXEC sp_adduser 'Haroldq', 'Harold', 'fort_mudge'
sp_addlogin
Crea un nuevo inicio de sesión de Microsoft® SQL Server™ que permite a un usuario conectarse a una instancia de SQL Server mediante la Autenticación de SQL Server.
Sintaxis
sp_addlogin [ @loginame = ] 'login'
[ , [ @passwd = ] 'password' ]
[ , [ @defdb = ] 'database' ]
[ , [ @deflanguage = ] 'language' ]
[ , [ @sid = ] sid ]
[ , [ @encryptopt = ] 'encryption_option' ]
Argumentos
[@loginame =] 'login'
Es el nombre del inicio de sesión. login es de tipo sysname y no tiene ningún valor predeterminado.
[@passwd =] 'password'
Es la contraseña de inicio de sesión. password es de tipo sysname y su valor predeterminado es NULL. Después de haber ejecutado sp_addlogin, password se cifra y se almacena en las tablas del sistema.
[@defdb =] 'database'
Es la base de datos predeterminada del inicio de sesión (la base de datos a la que se conecta el inicio de sesión después de haber iniciado la sesión). database es de tipo sysname y su valor predeterminado es master.
[@deflanguage =] 'language'
Es el idioma predeterminado asignado cuando un usuario inicia la sesión en SQL Server. language es de tipo sysname y su valor predeterminado es NULL. Si no se especifica language, este valor se establece en el idioma predeterminado actual del servidor (definido por la variable de configuración default language de sp_configure). El cambio del idioma predeterminado del servidor no cambia el idioma predeterminado de los inicios de sesión existentes. language sigue igual que el idioma predeterminado utilizado cuando se agregó el inicio de sesión.
[@sid =] sid
Especifica el número de identificación de seguridad (SID). sid es de tipo varbinary(16) y su valor predeterminado es NULL. Si sid es NULL, el sistema genera un SID para el nuevo inicio de sesión. A pesar de la utilización del tipo de datos varbinary, los valores que no sean NULL deben tener exactamente 16 bytes de longitud y no deben ser valores que ya existan. SID es útil, por ejemplo, cuando se cifran o mueven inicios de sesión de SQL Server desde un servidor a otro y se desea que los inicios de sesión tengan el mismo SID entre los servidores.
[@encryptopt =] 'encryption_option'
Especifica si se debe cifrar la contraseña cuando se almacena en las tablas del sistema. encryption_option es de tipo varchar(20) y puede ser uno de los valores siguientes.
Valor Descripción
NULL La contraseña se cifra. Éste es el valor predeterminado.
skip_encryption La contraseña ya está cifrada. SQL Server debe almacenar el valor sin volver a cifrar la contraseña.
skip_encryption_old La contraseña proporcionada se cifró mediante una versión anterior de SQL Server. SQL Server debe almacenar el valor sin volver a cifrar la contraseña. Esta opción sólo se proporciona para permitir la actualización.
Valores del código de retorno
0 (correcto) o 1 (error)
Observaciones
Los inicios de sesión y las contraseñas de SQL Server pueden contener de 1 a 128 caracteres, incluidos letras, símbolos y números. Sin embargo, los inicios de sesión no pueden:
Contener una barra diagonal inversa (\).
Ser un nombre reservado de inicio de sesión, por ejemplo sa o public, o uno que ya exista.
Ser NULL o una cadena vacía ('').
Si se proporciona el nombre de una base de datos predeterminada, puede conectarse a la base de datos especificada sin ejecutar la instrucción USE. Sin embargo, no puede usar la base de datos predeterminada hasta que no obtenga acceso a esa base de datos del propietario de ésta (utilizando sp_adduser o sp_addrolemember) o bien de sp_addrole.
El número de SID es el único número de identificación de usuario de Microsoft Windows NT®. Se garantiza que el SID es único para cada usuario de un dominio de Windows NT. SQL Server utiliza automáticamente el SID de Windows NT para identificar a los usuarios y grupos de Windows NT y genera un SID para los inicios de sesión de SQL Server.
La utilización de skip_encryption para suprimir el cifrado de contraseña es útil si la contraseña ya está en formato cifrado cuando se agrega el inicio de sesión a SQL Server. Si la contraseña se ha cifrado por medio de una versión anterior de SQL Server, utilice skip_encryption_old.
sp_addlogin no se puede ejecutar desde una transacción definida por el usuario.
En esta tabla se muestran varios procedimientos almacenados que pueden utilizarse junto con sp_addlogin.
Procedimiento almacenado Descripción
sp_grantlogin Agrega un usuario o grupo de Windows NT
sp_password Cambia la contraseña de un usuario.
sp_defaultdb Cambia la base de datos predeterminada de un usuario.
sp_defaultlanguage Cambia el idioma predeterminado de un usuario.
Permisos
Sólo los miembros de las funciones fijas de servidor sysadmin o securityadmin pueden ejecutar sp_addlogin.
Ejemplos
A. Crear un Id. de inicio de sesión sin contraseña ni base de datos predeterminada principal
En este ejemplo se crea un inicio de sesión de SQL Server para el usuario Victoria, sin especificarse una contraseña ni una base de datos predeterminada.
EXEC sp_addlogin 'Victoria'
B. Crear un Id. de inicio de sesión y una base de datos predeterminada
Este ejemplo crea un inicio de sesión SQL Server para el usuario Albert, con una contraseña "food" y una base de datos predeterminada corporate.
EXEC sp_addlogin 'Albert', 'food', 'corporate'
C. Crear un Id. de inicio de sesión con un idioma predeterminado diferente
En este ejemplo se crea un inicio de sesión de SQL Server para el usuario Claire Picard, con la contraseña "caniche", la base de datos predeterminada public_db y el idioma predeterminado "French".
EXEC sp_addlogin 'Claire Picard', 'caniche', 'public_db', 'french'
D. Crear un Id. de inicio de sesión con un SID específico
En este ejemplo se crea un inicio de sesión de SQL Server para el usuario Michael, con la contraseña "chocolate", la base de datos predeterminada pubs, el idioma predeterminado "us_english" y el SID 0x0123456789ABCDEF0123456789ABCDEF.
EXEC sp_addlogin 'Michael', 'chocolate', 'pubs', 'us_english', 0x0123456789ABCDEF0123456789ABCDEF
E. Crear un Id. de inicio de sesión y no cifrar la contraseña
En este ejemplo se crea un inicio de sesión de SQL Server para el usuario Margaret con la contraseña "Rose" en Server1, se extrae la contraseña cifrada y, luego, se agrega el inicio de sesión del usuario Margaret a Server2 utilizando la contraseña anteriormente cifrada, pero sin volver a cifrar la contraseña. El usuario Margaret puede entonces iniciar sesión en Server2 mediante la contraseña Rose.
-- Server1
EXEC sp_addlogin Margaret, Rose
--Results
New login created.
-- Extract encrypted password for Margaret
SELECT CONVERT(VARBINARY(32), password)
FROM syslogins
WHERE name = 'Margaret'
--Results
------------------------------------------------------------------
0x2131214A212B57304F5A552A3D513453
(1 row(s) affected)
-- Server2
EXEC sp_addlogin 'Margaret', 0x2131214A212B57304F5A552A3D513453,
@encryptopt = 'skip_encryption'