Платформа WCF / Entity Framework с внешней базой данных SQL Server не работает при развертывании в IIS - PullRequest
1 голос
/ 09 декабря 2011

У меня есть простой проект WCF, который использует Entity Framework для доступа к базе данных AdventureWorks. Это на самом деле из книги Windows Communication Foundation 4: Step by Step.

Проблема в том, что база данных SQL Server не является локальным экземпляром SQL Server Express, а является полным экземпляром SQL Server 2008 R2 на внешней машине с именем win01s305. Я создал модель данных из внешней базы данных с помощью Generate from Database. Доступ к данным полностью работает со встроенным веб-сервером ASP.NET (Cassini?), Пока я не опубликую службу WCF в IIS. Тогда учетные данные / учетная запись различаются на удаленном компьютере с SQL-сервером, и доступ к данным перестает работать.

В книге указывается сценарий, если у вас возникли проблемы:

USE [AdventureWorks]
GO
CREATE USER [IIS APPPOOL\DefaultAppPool] FOR LOGIN [IIS APPPOOL\DefaultAppPool]
GO
EXEC sp_addrolemember N'db_owner', [IIS APPPOOL\DefaultAppPool]
GO
GO
CREATE USER [IIS APPPOOL\ASP.NET v4.0] FOR LOGIN [IIS APPPOOL\ASP.NET v4.0]
GO
EXEC sp_addrolemember N'db_owner', [IIS APPPOOL\ASP.NET v4.0]
GO

Проблема в том, что эти учетные записи НЕ существуют на удаленном компьютере с SQL Server. На машине нет IIS или .NET Framework, только SQL Server. Как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 09 декабря 2011

Вы должны либо запустить пул приложений под учетной записью домена и предоставить права этого пользователя в своей базе данных, либо при включенной аутентификации в смешанном режиме на сервере sql создать пользователя, прошедшего проверку подлинности SQL, и добавить его имя и пароль в ваше соединение.строка.

USE [master]
GO
CREATE LOGIN [MYDOMAIN\MyAccount] FROM WINDOWS WITH DEFAULT_DATABASE=[master]
GO
USE [MyDatabase]
GO
CREATE USER [MyDomain\MyAccount] FOR LOGIN [MyDomain\MyAccount]
GO
USE [MyDatabase]
GO
EXEC sp_addrolemember N'db_datareader', N'MyDomain\MyAccount'
GO
USE [MyDatabase]
GO
EXEC sp_addrolemember N'db_datawriter', N'MyDomain\MyAccount'
GO
1 голос
/ 09 декабря 2011

Обычно я использую учетную запись домена для пула приложений или логин SQL для этого приложения.Все зависит от того, как вы структурируете свои серверы в (и вне) активной директории.Я предпочитаю последнее, FWIW.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...