これが私のシナリオです。
1つのサーバーでSharePoint2010を実行し、別のサーバーでSQLServerを実行しています。両方のマシンは同じドメイン上にありますが、関連するログインは各マシンに対してローカルです。違いが生じる場合、SharePointはNT Authority \NetworkServiceとして実行されています。
削除SQLServerからデータをプルするBCSを作成しました。接続文字列は次のように表示されますData Source={0}; Initial Catalog={1};User Id={2}; Password={3}; Integrated Security=SSPI
。すべての{x}が置き換えられると、接続文字列が適切に形成されていることを確認しました。
同じマシン(つまり、SharePointをホストしているマシン)で実行されているブラウザーからSharePointサイトにアクセスする場合、これは問題なく機能します。別のマシンのブラウザから接続すると、失敗します。
SQL Serverでプロファイラーを叩くと、SharePointが「ローカル」にアクセスされるときに、クエリを実行するユーザーがログインアカウントであることがわかります。リモートで実行している場合、ユーザーは「匿名」です。アカウントのアクセス許可により、前者は成功し、後者は失敗します。いかなる場合でも、ユーザーは実際には接続文字列で提供されたものではありません。
この回答は、問題がおそらく接続プールに関連していることを示していますが、問題の解決には役立っていません。
つまり、簡単に言うと、このBCSに接続文字列のユーザー名とパスワードのペアを実際に尊重させるにはどうすればよいでしょうか。または、それが失敗した場合、どうすれば同等の目的を達成できますか?サーバーのセットアップ(SharePointを1つ、SQL Serverをもう1つ)はネゴシエートできません。不幸にも。