2011-12-09 9 views
1

Entity Frameworkを使用してAdventureWorksデータベースにアクセスする単純なWCFプロジェクトがあります。実際に本から外されたWindows Communication Foundation 4: Step by Step.IISに展開すると外部SQL Serverデータベースを使用するWCF/Entity Frameworkが動作しない

catchは、SQL ServerデータベースがローカルのSQL Server Expressインスタンスではなく、win01s305という外部マシン上の完全なSQL Server 2008 R2インスタンスであることです。 Generate from Databaseによって外部データベースからデータモデルを作成しました。データアクセスは、IISにWCFサービスを公開するまで、ビルトインのASP.NET Webサーバー(Cassini?)で完全に機能します。その後、資格情報/アカウントはリモート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

ドメインアカウントでアプリケーションプールを実行し、そのユーザーにデータベースの権限を与えるか、SQL Serverで混在モード認証を有効にして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 
+0

SQLサーバーのドメインユーザー権限を与えるスクリプトの例はありますか? –

+0

SQL Management Studio GUIで簡単に実行できます。選択した場合はそこからスクリプトを生成することもできます。私はあなたのために私の答えを編集しました。 – JamieSee

1

通常、私はアプリケーションプール用のドメインアカウントまたはそのアプリケーション用のSQLログインを使用します。それはすべてあなたのサーバをどのようにアクティブなディレクトリの中に(そして外に)構築するかによって異なります。私の好みはFWIWです。

関連する問題