Ниже скрипт поможет вам ... с помощью Powershell, вы можете запустить его на несколько серверов.
Исходя из вашей потребности, вы можете изменить сценарий.
SELECT
[srvprin].[name] [server_principal],
[srvprin].[type_desc] [principal_type],
[srvperm].[permission_name],
[srvperm].[state_desc]
FROM [sys].[server_permissions] srvperm
INNER JOIN [sys].[server_principals] srvprin
ON [srvperm].[grantee_principal_id] = [srvprin].[principal_id]
WHERE [srvprin].[type] IN ('S', 'U', 'G') and [srvprin].[type_desc] like 'WINDOWS%'
ORDER BY [server_principal], [permission_name];
go
CREATE TABLE #ADMembership
(account_name SYSNAME,
[type] NVARCHAR(10),
privilege NVARCHAR(10),
mapped_login_name NVARCHAR(max),
permission_path NVARCHAR(max))
DECLARE @login SYSNAME;
SET @login = SUSER_SNAME();
INSERT INTO #ADMembership
EXEC XP_LOGININFO @login,'ALL';
-- select the data or do what ever u want ...
SELECT * FROM #ADMembership;
-- clean up
DROP TABLE #AdMembership
@MuhammadHani У меня есть часть Powershell для поражения каждого SQL-сервера без проблем. Моя проблема заключается в том, чтобы получить созданные пользователем роли базы данных. И все, на что я указываю, показывает только роли сервера. – Timmmers