Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как заскриптовать database permissions при помощи SMO?  [new]
sqluru
Member

Откуда:
Сообщений: 82
Что-то я упёрся в стену лбом.
Есть такая задача - обновление баз с одного environment в другой. Скажем базу из production надо восстановить в test и dev. При этом необходимо сохранить доступ для всех db users как и было до обновления. Например разработчик имеет полные права в development базе, и никаких в production. После restore всё должно быть как и раньше в смысле прав.
Использую SSIS SMO, пытаюсь использовать что-то типа (сгенерировать скрипт, чтобы потом запустить и забыть о нём до след. раза):

Dim srvr As Server = New Server(Dts.Variables("To_Instance").Value.ToString)

Dim db As Database

Dim options As New ScriptingOptions

options.ToFileOnly = False
options.FileName = "C:\temp\" + Dts.Variables("To_DB").Value.ToString + ".sql"
options.AppendToFile = True
options.Permissions = True
options.Default = True
options.LoginSid = True
options.ScriptDrops = True
options.IncludeDatabaseRoleMemberships = True
options.IncludeIfNotExists = True

db = srvr.Databases(Dts.Variables("To_DB").Value.ToString)

Dim usr As User

For Each usr In db.Users
UsersScript.Add(usr.Script(options).ToString)
Next

В результате в файле почему-то сохраняется совсем мало:

IF EXISTS (SELECT * FROM sys.database_principals WHERE name = N'DBUser')
DROP USER [DBUser]
GO


Может кто этим мазохизмом занимался? Или не там роюсь? Вообще-то задача то весьма стандартная.

Спасибо за помощь!
21 июл 09, 10:37    [7438737]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить