2015-06-09 4 views
0

Я пытаюсь опубликовать локально по экземпляру SQLExpress, чтобы протестировать возможности публикации VS Database Project и запустить «m» в ошибке, когда он пытается создать пользователя, который уже существует в базе данных . создание пользователя не заворачивают в пределах IF EXISTS и я не вижу какой-либо тип установки для контроля или приведения в исполнение этогоОшибка создания базы данных проекта базы данных VS

в частности, он бросает:. создание [хуг \ abc46518] ... (208,1): SQL72014: .Net Поставщик данных SqlClient: Msg 15063, уровень 16, состояние 1, строка 1 У учетной записи уже есть учетная запись под другим именем пользователя. (208,0): SQL72045: ошибка выполнения сценария. выполненный скрипт: CREATE USER [xyz \ abc46518] ДЛЯ ВХОДА [xyz \ abc46518];

В то время как другие части сценария имеют «ЕСЛИ СУЩЕСТВУЮТ» и «ЕСЛИ НЕ СУЩЕСТВУЮТ», эта часть скрипта не работает.

Я хотел бы иметь это как часть скрипта для управления пользователями в базе данных. Если кто-то решит предоставить доступ, и он не в источнике, он уходит, когда мы развертываем.

+0

Мы отказались от поддержки родных «пользователей» и развернули свои собственные, основываясь в основном на некоторых работах Джейми Томсона. Это ставит все разрешения и пользователи в сценарии после развертывания. http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html –

+0

Можете ли вы поставить «ЕСЛИ НЕ СУЩЕСТВУЕТ» в пользовательский скрипт? – Keith

ответ

0

Я начал использовать проекты с базами данных, они отличные, за исключением разрешений пользователя. У меня есть только разрешения dba для наших баз данных, тогда как обработка логинов находится на уровне сервера.

Так при создании проектов базы данных я получаю следующий код, генерируемый:

CREATE USER [имя пользователя] для входа в

Который, когда я пошел, чтобы построить проект будет ошибка.

Ну, я хотел пользователей, но не хотел, чтобы вам приходилось отслеживать сценарии пост-развертывания, в основном потому, что они разрушили мою прекрасную структуру TFS.

Мое решение, которое является немного рубить, вместо того, чтобы создать пользователя, я просто создал роль с тем же именем:

СОЗДАТЬ РОЛЬ [UserName] РАЗРЕШЕНИЯ [DBO];

Теперь я могу назначить права доступа для пользователя для моих объектов (я знаю, что весь доступ должен быть через роль, но не моя базу данных, так что я рад взломать затруднительный)

Мы никогда не разворачивать роли себя , поэтому для нас не имеет значения, что это роль или пользователь.

Смежные вопросы