sp_helprotect (Transact-SQL)
Se aplica a: SQL Server
Devuelve un informe que es información sobre los permisos de usuario de un objeto, o permisos de instrucción, en la base de datos actual.
Importante
sp_helprotect
no devuelve información sobre elementos protegibles que se introdujeron en SQL Server 2005 (9.x) y versiones posteriores. Use sys.database_permissions y sys.fn_builtin_permissions en su lugar.
No enumera los permisos que siempre se asignan a los roles fijos de servidor o a los roles fijos de base de datos. No incluye inicios de sesión ni usuarios que reciben permisos en función de su pertenencia a un rol.
Convenciones de sintaxis de Transact-SQL
Sintaxis
sp_helprotect
[ [ @name = ] N'name' ]
[ , [ @username = ] N'username' ]
[ , [ @grantorname = ] N'grantorname' ]
[ , [ @permissionarea = ] 'permissionarea' ]
[ ; ]
Argumentos
[ @name = ] N'name'
El nombre del objeto de la base de datos actual o una instrucción , que es el permiso para informar. @name es nvarchar(776), con un valor predeterminado de NULL
, que devuelve todos los permisos de objeto y instrucción. Si el valor es un objeto (tabla, vista, procedimiento almacenado o procedimiento almacenado extendido), tiene que ser un objeto válido de la base de datos actual. El nombre del objeto puede incluir un calificador de propietario con el formato <owner>.<object>
.
Si @name es una instrucción , puede ser una CREATE
instrucción .
[ @username = ] N'username'
Nombre de la entidad de seguridad para la que se devuelven los permisos. @username es sysname, con un valor predeterminado de , que devuelve todas las entidades de NULL
seguridad de la base de datos actual. @username deben existir en la base de datos actual.
[ @grantorname = ] N'grantorname'
Nombre de la entidad de seguridad que concedió permisos. @grantorname es sysname, con un valor predeterminado de NULL
, que devuelve toda la información de los permisos concedidos por cualquier entidad de seguridad de la base de datos.
[ @permissionarea = ] 'permissionarea'
Cadena de caracteres que indica si se van a mostrar permisos de objeto (cadena o
de caracteres), permisos de instrucción (cadena s
de caracteres) o ambos (o s
). @permissionarea es varchar(10), con un valor predeterminado de o s
. @permissionarea puede ser cualquier combinación de o
y s
, con o sin comas o espacios entre o
y s
.
Valores de código de retorno
0
(correcto) o 1
(erróneo).
Conjunto de resultados
Nombre de la columna | Tipo de datos | Descripción |
---|---|---|
Owner |
sysname | Nombre del propietario del objeto. |
Object |
sysname | Nombre del objeto. |
Grantee |
sysname | Nombre de la entidad de seguridad en la que se conceden los permisos. |
Grantor |
sysname | Nombre de la entidad de seguridad que ha concedido los permisos al receptor de permisos especificado. |
ProtectType |
nvarchar(10) | Nombre del tipo de protección:GRANT REVOKE |
Action |
nvarchar(60) | Nombre del permiso. Las instrucciones válidas de permisos dependen del tipo de objeto. |
Column |
sysname | Tipo de permiso:All = El permiso cubre todas las columnas actuales del objeto.New = El permiso cubre las nuevas columnas que se pueden cambiar (mediante la ALTER instrucción ) en el objeto en el futuro.All+New = Combinación de All y New .Devuelve un punto si el tipo de permiso no se aplica a las columnas. |
Comentarios
Todos los parámetros del siguiente procedimiento son opcionales. Si se ejecuta sin parámetros, sp_helprotect
muestra todos los permisos concedidos o denegados en la base de datos actual.
Si se especifican algunos parámetros, pero no todos, se tienen que utilizar parámetros con nombre para identificar el parámetro concreto o NULL
como marcador de posición. Por ejemplo, para notificar todos los permisos para el propietario de la base de datos receptor (dbo
), ejecute el siguiente script:
EXEC sp_helprotect NULL, NULL, dbo;
Or
EXEC sp_helprotect @grantorname = 'dbo';
El resultado está ordenada por categoría de los permisos, propietario, objeto, beneficiario, asignador, categoría del tipo de protección, tipo de protección, acción e Id. secuencial de columna.
Permisos
Debe pertenecer al rol public .
La información mostrada está sometida a restricciones de acceso a los metadatos. Las entidades en las que la entidad de seguridad no tiene permiso no aparecen. Para obtener más información, consulte Metadata Visibility Configuration.
Ejemplos
A Enumeración de los permisos de una tabla
En el siguiente ejemplo se presentan los permisos de la tabla titles
.
EXEC sp_helprotect 'titles';
B. Enumeración de los permisos de un usuario
En el siguiente ejemplo se presentan todos los permisos que el usuario Judy
tiene en la base de datos actual.
EXEC sp_helprotect NULL, 'Judy';
C. Enumerar los permisos concedidos por un usuario específico
En el ejemplo siguiente se enumeran todos los permisos concedidos por el usuario Judy
en la base de datos actual y se usa NULL
como marcador de posición para los parámetros que faltan.
EXEC sp_helprotect NULL, NULL, 'Judy';
D. Enumerar solo los permisos de instrucción
En el siguiente ejemplo se presentan todos los permisos de instrucciones de la base de datos actual, con NULL
como marcador de posición para los parámetros no especificados.
EXEC sp_helprotect NULL, NULL, NULL, 's';
e. Presentar los permisos de una instrucción CREATE
En el ejemplo siguiente se enumeran todos los usuarios a los que se concede el CREATE TABLE
permiso.
EXEC sp_helprotect @name = 'CREATE TABLE';