Сначала небольшое вступление.
У нас есть база данных SQL Server Express 2008, схема которой хранится в элементе управления исходным кодом в виде сценариев, изначально созданных путем открытия контекстного меню базы данных в Management Studio и выбора Задачи | Создать сценарии. ... .
У каждого разработчика есть локальная база данных SQL Server Express 2008 и одна центральная база данных SQL Server 2008, используемая сервером CI. Каждый раз, когда разработчик изменяет схему локальной базы данных, он (ы) регенерирует сценарии, фиксирует их вместе с исходным кодом и обновляет схему в центральной базе данных, используемой сервером CI.
Иногда изменения огромны, и проще просто удалить всю базу данных и создать ее с нуля, используя сценарии, что действительно легко.
НО , есть одна проблема. Хотя сценарии действительно создают правильного пользователя базы данных (скажем, ServerUser ), они не предоставляют этому пользователю членство в роли db_owner
, требуемое приложением. Разработчик должен не забыть открыть диалоговое окно свойств для пользователя ServerUser в Management Studio и установить флажок db_owner
в списке Членство в роли базы данных . Излишне говорить, что мы часто забываем об этом шаге. Я сам потратил около часа, пытаясь выяснить, почему сервер не запускается.
Будучи несколько наивным человеком, я подумал, что мог бы манипулировать каталогом [master].[sys].[database_role_members]
с помощью простого оператора вставки SQL, чтобы автоматически добавлять необходимое членство в роли, как часть выполнения сценариев. Конечно, это не удалось с сообщением об ошибке Специальные обновления системных каталогов не допускаются. . Глупый я.
В любом случае, мой вопрос такой. Можно ли запустить сценарий SQL при создании базы данных и ServerUser , что позволило бы этому пользователю получить роль db_owner
для новой базы данных?
Спасибо.