2008-11-06 4 views
3

SQL Server Management Studio 2008은 개체 수준 사용 권한을 스크립팅하는 옵션을 선택해도 테이블 사용 권한을 스크립팅하지 않습니다. 이것은 버그입니까, 아니면 다른 방법입니까? 저장 프로 시저에 대한 사용 권한을 만들지 만 테이블에는 사용 권한을 만들지 않습니다. 저는 시스템 관리자입니다.SQL Server Management Studio 2008에서 테이블 사용 권한이 스크립팅되지 않습니다.

작동하지 않는 경우 사용 권한을 스크립팅 할 수있는 무료 SQL Server 도구가 있습니까?

답변

2

는 내가 SQL 서버 포럼 사이트 중 하나에이 편리한 스크립트를 통해 온하지만 난 다시 찾을 수 있다면 내가 들어 봤나 해요 :

CREATE VIEW [dbo].[viw_DBPerms] AS 
SELECT 
    CASE 
      WHEN o.type = 'P' THEN 'Stored Procedure' 
      WHEN o.type = 'TF' THEN 'Table Function' 
      WHEN o.type = 'FN' THEN 'Scalar Function' 
      WHEN o.type = 'U' THEN 'Table' 
      WHEN o.type = 'V' THEN 'View' 
      WHEN o.type = 'SQ' THEN 'Service Queue' 
      ELSE o.type 
    END AS [Type], 
    s.name AS [Schema], 
    o.name AS [Object], 
    pr.name AS [User], 
    pe.permission_name AS Permission 
FROM sys.database_permissions pe 
LEFT JOIN sys.database_principals pr ON pe.grantee_principal_id = pr.principal_id 
JOIN 
    ( SELECT [object_id] AS [id], [name], type, schema_id, 1 AS [class] FROM sys.objects 
     UNION 
     SELECT [service_id] AS [id], [name] COLLATE SQL_Latin1_General_CP1_CI_AS [name], 'Service', '0', 17 AS [class] FROM sys.services 
     UNION 
     SELECT [service_cONtract_id] AS [id], [name], 'Service Contract', '0', 16 AS [class] FROM sys.service_contracts 
     UNION 
     SELECT [message_type_id] AS [id], [name], 'Message Type', '0', 15 AS [class] FROM sys.service_message_types 
    ) o 
    ON pe.major_id = o.id AND pe.class = o.class 
LEFT JOIN sys.schemas s ON o.schema_id = s.schema_id 

는 ... 그럼 그냥 사용

SELECT Object, 
    SUM(CASE Permission WHEN 'SELECT' THEN 1 ELSE 0 END) AS 'SELECT', 
    SUM(CASE Permission WHEN 'INSERT' THEN 1 ELSE 0 END) AS 'INSERT', 
    SUM(CASE Permission WHEN 'UPDATE' THEN 1 ELSE 0 END) AS 'UPDATE', 
    SUM(CASE Permission WHEN 'DELETE' THEN 1 ELSE 0 END) AS 'DELETE', 
    SUM(CASE Permission WHEN 'ALTER' THEN 1 ELSE 0 END) AS 'ALTER' 
FROM viw_DBPerms 
WHERE [User] = '<sqluser>' 
GROUP BY Object 

이것은 SQL 2005에서 작동하며 SQL 2008에서 정상적으로 작동 할 것으로 기대합니다.

관련 문제