вторник, 9 июля 2013 г.

Скрипт переноса пользователей ролей сервера

При переходе с одного сервера на другой, необходимо так же перенести пользователей и вхождения в роли сервера.

Ниже приводится скрипт, которые предоставляет это сделать:

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 поможет вам перенести пользователей и из права на новый сервер.
Скрипт копирования  самих пользователей с их SID-ами находится на сайте Microsoft.
 
Всего хорошего!

Комментариев нет :

Отправить комментарий