情報:当社では、サード パーティ製のアプリケーションを使用して生産を行っています。このプログラムは DSN を使用して、ODBC 経由で SQL Server 2012 データベースに接続します。このアプリケーションは Server 2003 (MADC 2.8) では正常に動作しますが、Server 2008 x86 (DAC 6.0) に移行すると、「Microsoft OLE DB Provider SQL Server Login failed for user XXX」で接続に失敗しました。これは、サーバー 2008 以降の Windows サーバーで "persist security info" のデフォルトが True から False に変更されたためだと思います (DAC 6.0 で変更)。サードパーティであるため、アプリケーション内の接続文字列を変更することはできません。この記事に見られるように
質問: ADO.Net の動作を変更して、接続文字列の外でこの値が False ではなく True にデフォルト設定されるようにする方法はありますか? これが問題を引き起こしている機能であることを少なくとも証明または反証できるようにしたいと思います。
注:これは、この設定の改ざんが大きなセキュリティ上の問題であることを認識しており、サーバーとアプリケーションが確実に分離されるように変更された場合は、適切な予防措置を講じます。
解決策:以下の @William によって提供されます。SQL Server サード パーティ アプリケーションを Server 2003 から Server 2008+ に更新し、2003 ではできなかった上記のような接続を取得している場合は、SQL アカウントのパスワードを空白に設定します (一時的またはステージングのみ、これは本番環境で空白のままにしておくことは非常に危険です) 空白のパスワードが提供されたときにアプリケーションが再び機能するかどうかをテストします。その場合、アプリケーションは接続文字列に Persist Security Info を設定しておらず、デフォルトで true に設定されていた値がデフォルトで false に設定されています。アプリケーションはサーバー 2003 での使用に制限されている可能性があり、サーバー 2008 以降では正しく機能しない可能性があります。デフォルトの値をtrueに戻す方法はありません。