W jaki sposób możemy pokazać wszystkie zabezpieczenia, które zostały dodane w jakiejś określonej roli w skrypcie?Wyświetl wszystkie papiery wartościowe dla ról w bazie danych SQL Server?
8
A
Odpowiedz
8
SELECT
OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
FROM
sys.database_permissions p
WHERE
p.class = 1 AND
OBJECTPROPERTY(major_id, 'IsMSSHipped') = 0
ORDER BY
OBJECT_NAME(major_id), USER_NAME(grantee_principal_id), permission_name
2
Oto kolejny, który używam do refaktoryzacji bazy danych, aktualizacji lub tworzenia kopii zapasowych. Obsługuje również uprawnienia na poziomie kolumny. To polecenie generuje instrukcje GRANT. Ale jest to dość łatwe do przystosowania.
SELECT 'GRANT ' + database_permissions.permission_name + ' ON ' +
CASE database_permissions.class_desc
WHEN 'SCHEMA' THEN schema_name(major_id)
WHEN 'OBJECT_OR_COLUMN' THEN
CASE WHEN minor_id = 0 THEN object_name(major_id) COLLATE Latin1_General_CI_AS_KS_WS
ELSE (SELECT object_name(object_id) + ' ('+ name + ')'
FROM sys.columns
WHERE object_id = database_permissions.major_id
AND column_id = database_permissions.minor_id) end
ELSE 'other'
END +
' TO ' + database_principals.name COLLATE Latin1_General_CI_AS_KS_WS
FROM sys.database_permissions
JOIN sys.database_principals
ON database_permissions.grantee_principal_id = database_principals.principal_id
LEFT JOIN sys.objects -- consider schemas
ON objects.object_id = database_permissions.major_id
WHERE database_permissions.major_id > 0
AND permission_name in ('SELECT','INSERT','UPDATE','DELETE')
Czy zdarzyło Ci się mieć wersję tego kodu z SQL 2000? –
Czy można filtrować to, aby dodać kolumnę, która określa typ obiektu? to jest tabela, widok, procedura przechowywana itp.? – Adam