sp_addrolemember (Transact-SQL)

Se aplica a: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System (PDW)

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 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.

Convenciones de sintaxis de Transact-SQL

Sintaxis

sp_addrolemember
    [ @rolename = ] N'rolename'
    , [ @membername = ] N'membername'
[ ; ]

Nota:

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

Argumentos

[ @rolename = ] N'rolename'

Nombre del rol de base de datos en la base de datos actual. @rolename es sysname, sin ningún valor predeterminado.

[ @membername = ] N'membername'

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

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Comentarios

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 crea un usuario de base de datos, pero es posible que no se asigne 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 se puede incluir como miembro. Estas definiciones circulares no son válidas, incluso cuando la pertenencia está implícita indirectamente por una o varias pertenencias intermedias.

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

sp_addrolemember Use solo para agregar un miembro a un rol de base de datos. Para agregar un miembro a un rol de servidor, use sp_addsrvrolemember.

Permisos

La adición de miembros a roles de base de datos flexibles requiere uno de los permisos siguientes:

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

  • Se debe pertenecer al rol propietario del rol.

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

Agregar miembros a roles fijos de base de datos requiere la pertenencia 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 inicio de sesión de Contoso\Mary5 Windows a la AdventureWorks2022 base de datos como usuario Mary5. A continuación, se agrega el usuario Mary5 al rol Production.

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

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

B. Adición de 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 sesión LoginMary a la AdventureWorks2022 base de datos como usuario UserMary. A continuación, se agrega el usuario UserMary al rol Production.

Nota:

Dado que el inicio de sesión LoginMary se conoce como el usuario UserMary de base de datos de la AdventureWorks2022 base de datos, se debe especificar el nombre UserMary 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 AdventureWorks2022
CREATE USER UserMary FOR LOGIN LoginMary;
GO
EXEC sp_addrolemember 'Production', 'UserMary'

D. Adición de 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'