Как создать пользователя для входа в 2013 году в SQL Server Database Project - программирование
Подтвердить что ты не робот

Как создать пользователя для входа в 2013 году в SQL Server Database Project

Я пытаюсь создать пользователя с логином для проекта базы данных SSDT. Логин уже существует на целевом сервере. Со следующим SQL:

CREATE USER [MyLogin]
        FOR LOGIN [MyLogin]
        WITH DEFAULT_SCHEMA = dbo

GO

Я получаю сообщение об ошибке:

Ошибка 1 SQL71501: Пользователь: [MyLogin] имеет неразрешенную ссылку на Login [MyLogin].

Я нашел два решения, но не работаю с 2013:

1) Создайте проект сервера, чтобы ссылаться на логин. Это не вариант в текущей версии SSDT/VS2013

2) Отключить проверку схемы. Опция отсутствует в 2013 году (я считаю, что она была Options -> Database Tools -> Schema Compare)

4b9b3361

Ответ 1

Фактически вы можете создать вход на уровне сервера в проекте базы данных SQL Server с использованием стандартного синтаксиса T-SQL:

CREATE LOGIN [Login_Name] WITH PASSWORD = '<Password>';

Примечание. Вы также можете щелкнуть правой кнопкой мыши проект базы данных и выбрать "Добавить новый элемент" и перейти к SQL Server > Безопасность (в диалоговом окне шаблонов) и выбрать "Войти (SQL Server)",.

Это устраняет ошибку SQL71501 и (при условии, что вы используете SQLPackage.exe для развертывания) позволит SQLPackage.exe сопоставить объект безопасности с целевой базой данных до развертывания и публикации.

Надеюсь, что это поможет:)

Ответ 2

Если вам гарантирован доступ к логину на сервере, лучше всего настроить ваш файл master dacpac. Есть несколько инструкций о том, как это сделать здесь: http://sqlproj.com/index.php/2013/02/how-to-add-objects-to-master-dacpac

В качестве альтернативы вы можете удалить ссылки на логины из части SSDT и обработать ее в сценариях после развертывания. Если у вас есть какая-либо среда, где разные разрешения должны применяться на разных серверах (Development, QA, Production), это может быть лучшим вариантом. Я писал об этом здесь: http://schottsql.blogspot.com/2013/05/ssdt-setting-different-permissions-per.html

Надеюсь, один из них поможет. Я фактически использовал первый вариант для решения проблемы с необходимостью использования EXECUTE AS, которая требует, чтобы пользователь находился в проекте. Было немного сложно получить точный XML, но я работал вокруг него, создав пустой проект, используя только этот логин, построил его и скопировал XML из dacpac в master dacpac.