ОК, я пытаюсь создать «пустую» версию базы данных на другом экземпляре SQL Server 2005. Для этого я использую мастер сценариев, чтобы создать большой скрипт, который СОЗДАЕТ все таблицы, представления, SP и т. д. добавляет некоторых пользователей и предоставляет им разрешения. Теперь в разделе разрешений скрипта у меня есть (между прочим)
use [master]
GO
GRANT CREATE VIEW to [myUser]
GO
...
use [prodDb]
GO
GRANT REFERENCES on [tblMyTable] to [myUser]
GO
...
Помните, что это скрипт, сгенерированный мастером. То, что я пытаюсь выяснить, должно ли "использовать мастер ... GRANT CREATE VIEW" позволить myUser создавать представления в prodDb? Это мое понимание - я говорю «myUser может создавать представления в любой базе данных в этом экземпляре», - но я думаю, что получаю ошибки разрешения, когда пытаюсь разрешить myUser создавать представление в prodDb. Когда я смотрю на разрешения для prodDb в SQL Server Manager, разрешения правильные, но целевая система, в которой я выполняю сгенерированный сценарий, не имеет SQL Server Manager, и я не уверен, как проверить разрешения для пользователя для данного объекта из командной строки (и, очевидно, ошибки, когда я пытаюсь использовать эти разрешения, являются большой подсказкой).
Это ошибка в мастере сценариев? Должен ли я забрать разрешения на уровне мастера и предоставить их только на уровне базы данных? Если это имеет какое-либо значение, это для локального приложения в автономной системе, которое никогда не будет подключено к сети.
ETA: ОК, так почему же мастер сценариев не выполняет правильные операторы GRANT для prodDb? Я имею в виду, если я посмотрю на текущие разрешения для myUser на prodDb, они могут CREATE VIEW. Но если я запускаю сценарий на новом экземпляре SQL Server из командной строки, myUser не может создать CREATE VIEW на prodDb. Я могу исправить это вручную, но чертовски раздражает необходимость помнить, что каждый раз, когда я перезапускаю мастер скриптов.