Visual Studio 2010 - не удается создать проект базы данных с импортированной базой данных - PullRequest
23 голосов
/ 29 марта 2011

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

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

SQL03006: пользователь: [сканер] имеет неразрешенную ссылку для входа в систему [сканер].

SQL, который генерирует эту ошибку:

СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ [сканер] ДЛЯ ЛОГИНА [сканер];

Пользователь "сканер" - это логин, определенный в импортированной мной базе данных.Я понятия не имею, что это говорит мне, и Google не вырвет много.Есть идеи?

Ответы [ 4 ]

16 голосов
/ 29 марта 2011

Логин фактически определен в основной базе данных установки сервера. Оператор CREATE USER должен указывать на существующий логин, в противном случае он ошибается. Проект базы данных не знает о входе в систему на уровне сервера. Либо вы можете создать серверный проект для обработки имен входа, либо отключить проверку объектов безопасности в вашем проекте базы данных. См. Ответ Дмитрия М для более подробной информации: http://social.msdn.microsoft.com/Forums/eu/vstsdb/thread/1f8226fe-b791-4344-8735-3d38307e8664

8 голосов
/ 27 февраля 2013

Я использую Visual Studio 2012 для проекта базы данных SQL Server 2008 R2. Опции, перечисленные @Judah, больше не работают.

Теперь они выглядят как настройки, которые вы настраиваете при выполнении сравнения схем:

Щелкните правой кнопкой мыши проект базы данных> Выберите «Сравнение схем»> Выберите значок шестеренки «Настройки»> Выберите вкладку «Типы объектов»>

Логины не ограничены областью применения. Роли в базе данных, разрешения, членство в ролях и пользователи находятся в области приложения.

К сожалению, единственный способ сохранить их - это сохранить сравнение схемы. Это может быть немного неудобно, если вы делитесь этим в команде и хотите сравнить настройки проекта / базы данных (или сервера) для любой схемы.

Тем не менее, работа сделана.

2 голосов
/ 02 сентября 2015

Вы можете изменить создание пользовательских сценариев для создания ролей.Поэтому вместо «Создать имя пользователя userName для имени входа в систему;»

используйте «Создать роль [userName] авторизация dbo;»

Это взлом, но до тех пор, пока вам не нужноРаботая с пользователями и ролями в вашем проекте, вы можете с радостью сделать следующее:

GRANT EXECUTE ON OBJECT :: [dbo]. [sp_name] TO [userName];

0 голосов
/ 07 мая 2018

Очевидно, эта проблема все еще возникает в проектах баз данных VS2017.

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

    -- Windows Account
    CREATE LOGIN [Domain\Username]
    FROM WINDOWS WITH DEFAULT_LANGUAGE = [us_english];

    GO

    CREATE USER [Domain\Username] FOR LOGIN [Domain\Username];
    GO

    -- Sql Acccount

    CREATE LOGIN [sql_account] WITH PASSWORD = 'Ch@ngeth1spA$swurD'
    GO

    CREATE USER [sql_account]
    FROM LOGIN [sql_account]
    WITH DEFAULT_SCHEMA = dbo

    GO



    -- Then set the sql file Build Action to "Build"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...