問題:如何獲得SQL Server 2000中知道對象的權限?
解決:
前幾天看到有人問是否可以方便的獲得SQL Server2000指定對象的權限和指定USER的權
限。我寫了一個存儲過程,可以獲得用戶和角色的權限。請大家幫忙測試一下。看看是
否還有BUG:-)
IF OBJECTPROPERTY( OBJECT_ID( 'usp_getObjectAuthor' ) , 'IsProcedure' ) =1
DROP PROC usp_getObjectAuthor
GO
/*************************************************************/
/* Created By : leimin */
/* Created On : 29 May 2004 */
/* Description : This stored procedure returns the object permission which
you */
/* GRANT,DENY and REVOKE.
*/
/**************************************************************/
Create proc usp_getObjectAuthor
@objectname sysname = null,
@username sysname = null
as
set nocount on
begin
/**************************************************************/
/* defined the initilization variable */
/**************************************************************/
Declare @rc int
Declare @rowcount int
Declare @groupid int
Set @rc=0
Set @rowcount=0
/**************************************************************/
/* Judge the input parameters ,if @objectname is null and @username is
null */
/* then return all objects authorization. */
/*************************************************************/
if @objectname is null and @username is null
begin
select object_name(a.id) as objectname,
user_name(a.uid) as usename,
case b.issqlrole when 1 then 'Group '
else 'User'
end as Role,
case a.protecttype when 205 then 'Grant'
when 204 then 'Grant'
when 206 then 'Deny'
else 'Revoke'
end as ProtectType,
case a.[action] when 26 then 'REFERENCES'
when 178 then 'CREATE FUNCTION'
when 193 then 'SELECT'
when 195 then 'INSERT'
when 196 then 'DELETE'
when 197 then 'UPDATE'
when 198 then 'CREATE TABLE'
when 203 then 'CREATE DATABASE'
when 207 then 'CREATE VIEW'
when 222 then 'CREATE PROCEDURE'
when 224 then 'EXECUTE' <