Задача сделать ревизию какие права имеют доменные группы и пользователи права на базы данных
-- Удаляем временную таблицу, если существует
IF OBJECT_ID('tempdb..#Permissions') IS NOT NULL
DROP TABLE #Permissions;
-- Создаём временную таблицу для результатов
CREATE TABLE #Permissions (
DatabaseName SYSNAME,
LoginName NVARCHAR(256),
UserInDB NVARCHAR(256),
DatabaseRole NVARCHAR(256)
);
-- Динамически проверяем все базы данных
EXEC sp_MSforeachdb '
USE [?];
INSERT INTO #Permissions (DatabaseName, LoginName, UserInDB, DatabaseRole)
SELECT
''?'' AS DatabaseName,
sp.name AS LoginName,
dp.name AS UserInDB,
ISNULL(dr.name, ''Public role or no role'') AS DatabaseRole
FROM sys.database_principals dp
JOIN sys.server_principals sp ON dp.sid = sp.sid
LEFT JOIN sys.database_role_members drm ON dp.principal_id = drm.member_principal_id
LEFT JOIN sys.database_principals dr ON drm.role_principal_id = dr.principal_id
WHERE sp.type IN (''U'', ''G'') -- Windows users and groups
AND sp.name LIKE ''adminbd\%''
AND dp.type IN (''S'', ''U'', ''G'') -- SQL user, Windows user, Windows group
';
-- Показываем результат
SELECT
*
FROM #Permissions
ORDER BY LoginName, DatabaseName, DatabaseRole;
Similar Posts:
- Как в mssql узнать какие права на базы данных имеет пользователь.
- Как в Mssql сделать новый файл файловой группы на новом диске H .
- Как вывести размер всех баз в mssql с файловыми группами и Space Use Free Space Свободное место
- Исследуем базы данных с помощью T-SQL
- Как узнать кто давно не подключался к почтовому ящику в exchange.
