1

従来の ASP アプリケーションをローカルの SQL Server 2008 データベースに接続しようとしています。アプリとデータベースは他の誰かによって構築されました。それらを自分のマシン(Windows 7)にインストールして実行しようとしています。

ASP アプリがデータベースに接続しようとすると、次のエラーが発生します。

Could not connect to database:
Error Number: -2147467259
Error Message: [ConnectionOpen (Connect()).] does not exist or access denied.

Windows イベント ビューアーにメッセージが表示されません。私が見ているのは、イベント ビューアー -> Windows ログ -> アプリケーションです。

これは、単純な復元を使用したデータベースの新規インストールです。SQL Server のインストールでは、既定のインスタンスが使用されます。SQL Server と Windows 認証の両方が許可されます。既存の接続文字列 (ASP コード内) をそのままにして、それを SQL Server インストールに追加しようとしました。接続文字列は次のとおりです。

strConn = "PROVIDER=SQLOLEDB;SERVER=localhost;UID=TheUser;PWD=ThePassword;DATABASE=TheDatabase;"

そのユーザーを SQL Server に追加するために、SSMS の [セキュリティ/ログイン] に移動し、ユーザーとパスワードを追加しました。問題のデータベースをデフォルト データベースとして選択しました。私はそれがトリックを行うかもしれないと思ったが、そうではなかった. 次に、TheDatabase に入り、そこで Security に入りました。サーバー セキュリティで既に追加した新しいユーザーを参照して、そこに新しいユーザーを追加しました。[Owned Schemas] の下で [db_owner] をクリックし、[Role Members] の下で [db_accessadmin] と [db_owner] をチェックしました。これにより、ASP アプリケーションはデータベースにアクセスできませんでした。sid 値は、問題のログインsys.database_principalsと一致します。sys.server_principalsこのログインを使用して SSMS にログインできます。

アプリは、次のようにデータベースに対して選択を実行する必要があります。

oConn.Execute('select * from someTable')

私は DBA ではなく、ここでストローをつかんでいます。どうすればこれを接続できますか?

ありがとう、ジェイ

4

1 に答える 1

0

SQL Server または IIS の Web サイトが、間違った権限を持つユーザーとして実行されている可能性があることに気付きました。私が読んだことによると、SQL Server がローカル システムとして実行されていても問題ないので、そのままにしておきました。

IIS では、私の Web サイトは「アプリケーション ユーザー (パススルー認証)」を使用していました。これは、[基本設定] -> [接続先] ([サイトの編集] ダイアログ ボックス) で設定されます。[設定のテスト...] をクリックすると、[承認] の横に「パス ( c:\mywebsitepath) へのアクセスを確認できません」と表示されました。そのディレクトリへのアクセス許可を増やしましたが、それは役に立ちませんでした。[Connect As] ダイアログ ボックスで、[Path credentials] を変更して、[Application user (pass-through authentication)] ではなく [Specific user] を使用するようにしました。マシンにログインするユーザーを使用するように設定しました。その後、「テスト設定...」ボタンをクリックすると、「認証」の横に「パスはアクセス可能です(c:\mywebsitepath)」と表示されます。その後、ASP Web サイトは問題なく SQL Server に接続できます。

接続文字列は特定の SQL Server ユーザー名とパスワードを使用していたため、これで問題が解決した理由は正確にはわかりませんが、解決したようです。

于 2012-11-28T17:02:28.347 に答える