2014-10-02 8 views
2

У меня есть проект SQL Database Project Visual Studio 2013, который создает файл DACPAC для развертывания базы данных SQL для SQL Server с использованием опции «Развертывание уровня данных ...» - это SQL Server Management Студия (SSMS).Пользователь, созданный с помощью DACPAC Не удается войти

В рамках проекта есть Папка безопасности с SQL-скриптом, в котором создается требуемый пользователь. Сценарий:

CREATE LOGIN [MyLogin] 
    WITH PASSWORD = N'MyPassword', 
    DEFAULT_DATABASE = [MyDatabase], 
    DEFAULT_LANGUAGE = [us_english], 
    CHECK_EXPIRATION = OFF, 
    CHECK_POLICY = OFF 
GO 

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

exec sp_addrolemember 'db_datareader', N'MyLogin' 
GO 

GRANT EXECUTE ON OBJECT::[dbo].[MyObject1] TO [MyLogin]; 
GO 

GRANT EXECUTE ON OBJECT::[dbo].[MyObject2] TO [MyLogin]; 
GO 

GRANT EXECUTE ON OBJECT::[dbo].[MyObject3] TO [MyLogin]; 
GO 

При публикации DACPAC на SQL Server приложение, которое потребляет базу данных, не может войти в систему. Просмотр свойств пользователя в SSMS показывает, что между пользователем базы данных и логином входа в SQL Server нет связи, которая, по-видимому, предотвращает вход приложения в систему.

Однако при выполнении приведенного выше сценария в SSMS пользователь правильно устанавливает и приложение может войти в систему успешно.

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

Спасибо, Martin

ответ

4

Так в конце концов я добрался до сути этого с помощью коллеги, и недостающую часть была следующие две строки после CREATE USER ... заявления:

GRANT CONNECT TO [MyLogin]; 
GO 

Теперь DACPAC правильно развертывает базу данных SQL, и приложения могут подключаться к базе данных с помощью созданного пользователя MyLogin.