sp_addrolemember (Transact-SQL)

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

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

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

Argumentos

  • [ @rolename = ] 'role'
    Es el nombre de la función de base de datos en la base de datos actual. role es de tipo sysname y no tiene valor predeterminado.

  • [ @membername = ] 'security_account'
    Es la cuenta de seguridad que se va a agregar a la función. security_account es de tipo sysname y no tiene valor predeterminado. security_account puede ser un usuario de base de datos, una función de base de datos, un inicio de sesión de Windows o un grupo de Windows.

Valores de los códigos de retorno

0 (correcto) o 1 (error)

Notas

Un miembro agregado a una función mediante sp_addrolemember hereda los permisos de la función. Si el nuevo miembro es una entidad de seguridad del 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.

Una función 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 no puede agregar una función fija de base de datos, una función fija de servidor o dbo a una función. sp_addrolemember no se puede ejecutar en una transacción definida por el usuario.

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

Permisos

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

  • Se debe pertenecer a la función de base de datos fija db_owner.

  • Se debe pertenecer a la función de base de datos fija db_securityadmin.

  • Se debe pertenecer a la función propietaria de la función.

  • Se debe tener el permiso ALTER en la función.

Para poder agregar miembros a las funciones de base de datos fijas. es necesario que pertenezca a la función de base de datos fija db_owner.

Ejemplos

A. Agregar un inicio de sesión de Windows

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

[!NOTA]

Dado que Contoso\Mary5 se conoce como el usuario Mary5 de la base de datos AdventureWorks, 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 AdventureWorks
GO
CREATE USER Mary5 FOR LOGIN [Contoso\Mary5] ;
GO
EXEC sp_addrolemember 'Production', 'Mary5'

B. Agregar un usuario de base de datos

En el siguiente ejemplo se agrega el usuario de base de datos Mary5 a la función de la base de datos Production en la base de datos actual.

EXEC sp_addrolemember 'Production', 'Mary5'