Скрипт добавляет доменную учетную запись пользователя в группу sysadmin на MS SQL сервере.
DECLARE @login NVARCHAR(200);
DECLARE @seachuser INT;
DECLARE @grant NVARCHAR(50);
DECLARE @sqlstmt varchar(200)
SET @login = 'domain\User'
SET @GRANT = 'sysadmin'
SET @seachuser = (select count(1) from master.sys.server_principals
where name in (@login))
-- DROP LOGIN [domain\login]
-- select @seachuser
IF (@seachuser = 1)
BEGIN
/*
Set @sqlstmt='DROP LOGIN ['+@login+']'
print @sqlstmt
exec(@sqlstmt)
*/
exec sp_addsrvrolemember @login,@GRANT;
select 'Пользователь существует!'
END
ELSE
BEGIN
--Создание УЗ
--CREATE LOGIN [domain\login] FROM WINDOWS;
Set @sqlstmt='CREATE LOGIN ['+@login+'] FROM WINDOWS;'
print @sqlstmt
exec(@sqlstmt)
--Добавление роли
exec sp_addsrvrolemember @login,@GRANT;
END
Получаем список всех групп пользователя:
-- Получаем список всех групп пользователя
select r.name as Role, m.name as Principal
from master.sys.server_role_members rm
inner join
master.sys.server_principals r on r.principal_id = rm.role_principal_id and r.type = 'R'
inner join
master.sys.server_principals m on m.principal_id = rm.member_principal_id
where m.name = 'domain\user'
Получаем список всех пользователей группы:
-- Получаем список всех пользователей группы
SELECT
p.name AS [Name]
FROM
sys.server_principals r
INNER JOIN sys.server_role_members m ON r.principal_id = m.role_principal_id
INNER JOIN sys.server_principals p ON
p.principal_id = m.member_principal_id
WHERE r.type = 'R' and r.name = N'sysadmin'