ASP Classic で記述されたレガシー サイトをローカル マシンにセットアップしようとしています。SQL Server 2008 と IIS バージョン 7.5 を使用しています。
データベースへの接続を開こうとすると、エラーが発生します。
この投稿のアドバイスを使用しました
.udl ファイルを使用して接続文字列を作成およびテストし、接続文字列が機能することを確認します。私は Windows 認証を使用しています。このサイトを実行しているアプリ プールがデータベースにアクセスできることは確かです。複数のサイトに同じプールを使用していて、すべて正常に接続できるからです。
接続を開くときに、ストアド プロシージャを実行しようとしています。ストアド プロシージャ文字列を書き出してデータベースで直接実行すると、期待どおりに動作します。
コードは次のとおりです。
Const adUseClient = 3
Const adCmdStoredProc = 4
Const adOpenStatic = 3
Const adLockBatchOptimistic = 4
dim connectstring,sql
connectstring = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=my-database;Data Source=(local)\SQLEXPRESS"
sql = "MyProc '" & param1 & "','" & param2 & "'"
set rs = Server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = adUseClient
rs.CursorType = adOpenStatic
rs.LockType = adLockBatchOptimistic
' this is where it is failing
rs.Open sql, connectstring, 3
問題の 1 つは、IIS によって生成されたように見えるエラーです。
URL の処理中にサーバーでエラーが発生しました。システム管理者に連絡してください。
システム管理者の方は、ここをクリックしてこのエラーの詳細を確認してください。
「ここをクリック」リンクをクリックすると、IIS 7 での ASP クラシック サイトの実行に関する一般的なページに移動しますが、エラーに関連すると思われるものは何も見つかりませんでした。エラーに関する情報を入手する場所が見つからないようです。最後の手段として、イベント ビューアー -> Windows アプリケーション ログを確認しましたが、エラーのエントリはありませんでした。
私はグーグルで検索し、接続文字列で複数の順列を試しましたが、役に立ちませんでした。この問題を解決する方法について誰かアドバイスがあれば、またはどこで解決策を探すべきかについてのアイデアさえあれば、私は感謝します. どうもありがとう!
**編集: **
わかりました、ブラウザーでエラーを表示するように IIS の設定を変更したところ、もう少し便利なエラー メッセージが表示されるようになりました。
Microsoft OLE DB Provider for SQL Server エラー '80004005'
ログインで要求されたデータベース "rw-gp" を開けません。ログインに失敗しました。
これをグーグルで調べたところ、これは多くの場合、権限の問題であることがわかりました。ご覧のとおり、私は Windows 認証を使用しており、データベースに接続する権限を持つアプリ プールでサイトを実行しています。このアプリ プールで実行される複数の ASP.NET サイトをローカルにセットアップしており、それらは統合セキュリティを使用して接続できます。何がうまくいかないのかわからない、誰か提案はありますか?