T-SQL Добавление пользователя и роли на MS SQL сервере!

Скрипт добавляет доменную учетную запись пользователя в группу 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' 

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *