При переходе с одного сервера на другой, необходимо так же перенести пользователей и вхождения в роли сервера.
Ниже приводится скрипт, которые предоставляет это сделать:
IFNOTEXISTS(SELECT*FROM tempdb.sys.objectsWHEREobject_id=OBJECT_ID(N'tempdb.dbo.#t')
ANDtypein(N'U'))
BEGIN
createtable #t
( serverrole nvarchar(40),
membername nvarchar(200),
membersid varbinary(85)
)
end
else
truncatetable #t
declare @serverrole nvarchar(40)
declare @Membername nvarchar(200)
declare @sql nvarchar(250)
insertinto #t
execsp_helpsrvrolemember-- 'sysadmin'
--Если необходим список конкретной роли, то нужно указать её, иначе получится скрипт для всех ролей
declare cur cursorfor
select serverrole,Membername from #t
where Membername notin('sa','NT AUTHORITY\SYSTEM',
'NT SERVICE\MSSQLSERVER','NT SERVICE\SQLSERVERAGENT',
'NT AUTHORITY\NETWORK SERVICE'
,'BUILTIN\Administrators')
open cur
FETCHNEXTFROM cur INTO @serverrole,@membername
WHILE@@FETCH_STATUS= 0
BEGIN
set @sql='exec sp_addsrvrolemember '''+@Membername+''' ,'''+ @serverrole+''';'
print @sql
FETCHNEXTFROM cur INTO @serverrole,@membername
END
CLOSE cur
DEALLOCATE cur
droptable #t
Результат будет примерно такой:
exec sp_addsrvrolemember 'sa2' ,'sysadmin';
exec sp_addsrvrolemember 'user_testt' ,'sysadmin';
.
Этот скрипт совместно со скриптом копирования прав пользователей на сервер MS SQL Server поможет вам перенести пользователей и из права на новый сервер.
Всего хорошего!