SQL Server إدارة ستوديو 2008 لا البرمجة أذونات الجدول
-
06-07-2019 - |
سؤال
وSQL Server إدارة ستوديو 2008 ليست البرمجة أذونات الجدول حتى عند تحديد خيار أذونات مستوى الكائن النصي. هل هذا خلل أم أن هناك طريقة أخرى للقيام بذلك؟ فإنه يتم إنشاء أذونات procs المخزنة، ولكن ليس للجداول. أنا مسؤول النظام.
إذا كان لا يعمل، هل هناك أدوات مجانية SQL Server لالنصي الأذونات؟
المحلول
وجئت عبر هذا البرنامج النصي يدوية على أحد المواقع منتدى SQL Server ولكن أنا buggered ما اذا كان يمكنني العثور عليه مرة أخرى:
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.
لا تنتمي إلى StackOverflow