sp_addrolemember (Transact-SQL)

Se aplica a: síSQL Server (todas las versiones admitidas) SíAzure SQL Database SíInstancia administrada de Azure SQL síAzure Synapse Analytics síAlmacenamiento de datos paralelos

Agrega un usuario de base de datos, un rol de base de datos, un inicio de sesión de Windows o un grupo de Windows a un rol de base de datos en la base de datos actual.

Importante

Esta característica se quitará en una versión futura de Microsoft SQL Server. Evite utilizar esta característica en nuevos trabajos de desarrollo y tenga previsto modificar las aplicaciones que actualmente la utilizan. Use ALTER ROLE en su lugar.

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addrolemember [ @rolename = ] 'role', [ @membername = ] 'security_account'  

Nota

El grupo de SQL sin servidor no admite esta sintaxis en Azure Synapse Analytics.

Argumentos

[ @rolename = ] 'role'
Es el nombre del rol en la base de datos actual. role es un sysname, sin ningún valor predeterminado.

[ @membername = ] 'security_account'
Es la cuenta de seguridad que se va a agregar al rol. security_account es un sysname, sin ningún valor predeterminado. security_account puede ser un usuario de base de datos, un rol de base de datos, Windows inicio de sesión o Windows grupo.

Valores de código de retorno

0 (correcto) o 1 (error)

Observaciones

Un miembro agregado a un rol mediante sp_addrolemember hereda los permisos del rol. Si el nuevo miembro es una entidad de seguridad de nivel de Windows sin un usuario de base de datos correspondiente, se creará un usuario de base de datos pero no se asignará completamente al inicio de sesión. Compruebe siempre que el inicio de sesión existe y tiene acceso a la base de datos.

Un rol no puede incluirse como un miembro. Este tipo de definiciones "circulares" no es válido, incluso cuando la pertenencia solo esté implícita indirectamente en uno o varios miembros intermedios.

sp_addrolemember puede agregar un rol fijo de base de datos, un rol fijo de servidor o dbo a un rol.

Utilice sp_addrolemember únicamente para agregar un miembro a un rol de base de datos. Para agregar un miembro a un rol de servidor, use sp_addsrvrolemember (Transact-SQL).

Permisos

Para agregar miembros a los roles flexibles de la base de datos, se debe cumplir una de las condiciones siguientes:

  • Pertenencia al rol fijo db_securityadmin o db_owner base de datos.

  • Se debe pertenecer al rol propietario del rol.

  • Permiso ALTER ANY ROLE o permiso ALTER en el rol.

Para poder agregar miembros a los roles fijos de base de datos es necesario pertenecer al rol fijo de base de datos db_owner.

Ejemplos

A. Agregar un inicio de sesión de Windows

En el ejemplo siguiente se agrega el Windows inicio de Contoso\Mary5 sesión a la base de datos como usuario AdventureWorks2012 Mary5 . A continuación, se agrega el usuario Mary5 al rol Production.

Nota

Dado que Contoso\Mary5 se conoce como el usuario Mary5 de la base de datos AdventureWorks2012, es preciso especificar el nombre de usuario Mary5. Se producirá un error en la instrucción a menos que un inicio de sesión Contoso\Mary5 exista. Pruebe a usar un inicio de sesión de su dominio.

USE AdventureWorks2012;  
GO  
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;  
GO  

B. Agregar un usuario de base de datos

En el siguiente ejemplo se agrega el usuario de base de datos Mary5 al rol de la base de datos Production en la base de datos actual.

EXEC sp_addrolemember 'Production', 'Mary5';  

Ejemplos: Sistema de la plataforma de análisis (PDW)

C. Agregar un inicio de sesión de Windows

En el ejemplo siguiente se agrega el inicio de LoginMary sesión a la base de datos como usuario AdventureWorks2008R2 UserMary . A continuación, se agrega el usuario UserMary al rol Production.

Nota

Dado que el inicio de sesión se conoce como el usuario de base de datos de la base de LoginMary UserMary AdventureWorks2012 datos, se UserMary debe especificar el nombre de usuario. Se producirá un error en la instrucción a menos que un inicio de sesión Mary5 exista. Los inicios de sesión y los usuarios suelen tener el mismo nombre. En este ejemplo se usan nombres diferentes para diferenciar las acciones que afectan al inicio de sesión frente al usuario.

-- Uses AdventureWorks  
  
CREATE USER UserMary FOR LOGIN LoginMary ;  
GO  
EXEC sp_addrolemember 'Production', 'UserMary'  

D. Agregar un usuario de base de datos

En el siguiente ejemplo se agrega el usuario de base de datos UserMary al rol de la base de datos Production en la base de datos actual.

EXEC sp_addrolemember 'Production', 'UserMary'  

Vea también

Procedimientos almacenados de seguridad (Transact-SQL)
sp_addsrvrolemember (Transact-SQL)
sp_droprolemember (Transact-SQL)
sp_grantdbaccess (Transact-SQL)
Procedimientos almacenados del sistema (Transact-SQL)
Roles de nivel de base de datos