Перейти к содержимому

Как вывести в mssql какие права имеет пользователь или группа ad на базы данных .

Задача сделать ревизию какие права имеют доменные группы и пользователи права на базы данных

-- Удаляем временную таблицу, если существует
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:

Метки:

Добавить комментарий

Яндекс.Метрика