При переходе с одного сервера на другой, необходимо так же перенести пользователей и вхождения в роли сервера.
Ниже приводится скрипт, которые предоставляет это сделать:
IF NOT EXISTS (SELECT * FROM tempdb.sys.objects WHERE object_id = OBJECT_ID(N'tempdb.dbo.#t')
AND type in (N'U'))
BEGIN
create table #t
( serverrole nvarchar(40),
membername nvarchar(200),
membersid varbinary(85)
)
end
else
truncate table #t
declare @serverrole nvarchar(40)
declare @Membername nvarchar(200)
declare @sql nvarchar(250)
insert into #t
exec sp_helpsrvrolemember -- 'sysadmin'
--Если необходим список конкретной роли, то нужно указать её, иначе получится скрипт для всех ролей
declare cur cursor for
select serverrole,Membername from #t
where Membername not in ('sa','NT AUTHORITY\SYSTEM',
'NT SERVICE\MSSQLSERVER','NT SERVICE\SQLSERVERAGENT',
'NT AUTHORITY\NETWORK SERVICE'
,'BUILTIN\Administrators')
open cur
FETCH NEXT FROM cur INTO @serverrole,@membername
WHILE @@FETCH_STATUS = 0
BEGIN
set @sql='exec sp_addsrvrolemember '''+@Membername+''' ,'''+ @serverrole+''';'
print @sql
FETCH NEXT FROM cur INTO @serverrole,@membername
END
CLOSE cur
DEALLOCATE cur
drop table #t
Результат будет примерно такой:
exec sp_addsrvrolemember 'sa2' ,'sysadmin';
exec sp_addsrvrolemember 'user_testt' ,'sysadmin';
.
Этот скрипт совместно со скриптом копирования прав пользователей на сервер MS SQL Server поможет вам перенести пользователей и из права на новый сервер.
Всего хорошего!
Комментариев нет :
Отправить комментарий