- PR -

VB.NETアプリからリモートのMSDEにアクセスできない

1
投稿者投稿内容
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-06-23 11:48
MSDEを使ってデータベースアプリを作っているのですが、以下のような環境で以下のような症状になり困っています。

【環境】
サーバ:Windows2000server IIS5 MSDE(SP3) .NET1.1
クライアント:WindowsXP VS.NETにて開発(VB.NET) ※別サーバ(.NET1.0)で作成の後、当該サーバへ移しています。

webアプリケーションについて
・web.configは偽装。
<identity impersonate="true" />ユーザ名を指定しないので確かASPNETにて動作、だったような。
・コネクションは以下の通り。サーバ名、パスワード、データベース名は間違っていないはずです。
Data Source=hoge;User ID=sa;Password=hoge;Persist Security Info=True;Initial Catalog=hogehoge"

【症状】
「System.Data.SqlClient.SqlException: SQL Server が存在しないか、アクセスが拒否されました。」
が表示される。

よくある設定ミスかなと思い色々調べてみたのですが、フリーのMSDE管理ツールで”サーバ名”にて接続・管理ができ、accessでも”IPアドレス”でデータリンクできたことと、下のMS記事に

>"SQL Server が存在しないか、アクセスが拒否されました" というメッセージは、以下
>のことを示すものではありません。
>SQL Server へのログオン処理が失敗した。
>SQL Server に、クエリの処理に必要な権限が付与されていない。
>許可されているのが Windows 認証のみであるため、SQL Server 認証を使用できな
>い。

とあることから、つまりVB.NETアプリが動作する際のアカウントの問題であると考えました。
MS記事にはクライアントまたはアプリに原因がある可能性として、次のように書かれています。

>接続に使用している Windows レベルのセキュリティが、予想しているものと異なりま
>す。たとえば、Microsoft インターネット インフォメーション サービス (IIS) では、
>ユーザーが Windows へのログオンに使用したアカウントではなく、IUSR_computername
>が使用されます。IIS の構成によっては、別のアカウントが使用されることもありま
>す。また、リンク サーバーの場合、環境によっては SQL Server エージェントの
>Windows レベルのセキュリティ コンテキストが使用されます。使用しているアカウント
>のセキュリティ コンテキストに、SQL Server がインストールされているコンピュータ
>に対するアクセス許可がない可能性があります。

一瞬、ASP.NETの実行ユーザであるASPNETがMSDEにログインできないから?と考えましたが、しかし前述のとおりMSDEへのログオン処理云々には関係ないとのことですし、うーん・・・とどんずまってしまった次第です。

ものすごく初歩的な見落としをしてしまっているのかもしれませんが、何かお心当たりがある方、アドバイスをお願いします。
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-06-23 11:51
失礼しました。参考にしたMS記事はこちらです。

http://support.microsoft.com/kb/328306/JA
どっとねっとふぁん
ぬし
会議室デビュー日: 2005/02/23
投稿数: 935
投稿日時: 2005-06-23 14:05
> フリーのMSDE管理ツールで”サーバ名”にて接続・管理ができ

これはXP上からユーザ名sa、パスワードを入力して接続しているのでしょうか?

あと、MSDEのインストール時にどんな設定しました?
標準ではWindows認証でネットワークからの接続も閉じた形でインストールされるはず。
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-06-23 15:10
お返事ありがとうございます。

>これはXP上からユーザ名sa、パスワードを入力して接続しているのでしょうか?

はい、そうです。
ただ、サーバhogeにアカウントhoge¥hogeuserを作成し、同一サーバhoge上にあるMSDEにもログインアカウントhoge¥hogeuser(Windows認証)を作成したのですが、この場合はログインできませんでした。

>あと、MSDEのインストール時にどんな設定しました?
>標準ではWindows認証でネットワークからの接続も閉じた形でインストールされるはず。

設定はsaのパスワードと、混在モード(SECURITYMODE=SQL)をパラメタ指定しました。
その”ネットワークからの接続も閉じた”というのがよくわからないのですが、関係ないかもしれませんがSVRNETCN(SQLserverネットワークユーティリティ)から、TCP/IPと名前付きパイプは有効にしてあります。
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-06-23 16:38
色々試した結果、どうやらWindows統合認証でログインできないのが原因のようです。

一旦、サーバからMSDEをアンインストールし、フリーのインストーラを使って再インストールしました。
「Windows統合認証」のみ、サポートするようにです。

で、サーバ本体からWindows統合認証(ローカルのadministrator)でログインしようとしたのですが
「SQL Server が存在しないか、アクセスが拒否されました。」
というダイアログボックスが表示されてしまいました。

なんか.NETアプリとはまったく関係無い問題なのですが、もうちょっと頭を捻ってみます。楽しい週末を迎えるために。
黒コアラ
常連さん
会議室デビュー日: 2004/07/03
投稿数: 23
投稿日時: 2005-06-23 20:12
続きです。

MSDEの再インストールにより、混合モードでの動作ができるようになりました。
が、やはりまだアプリは動いてはくれません。
http://blogs.sqlpassj.org/matu_tak/archive/2004/06/16/2742.aspx
こちら様を参考にしながら、以下のような事をしました。

・サーバhoge上にhoge¥hogeuserというアカウントを作成、MSDE上にhoge¥hogeuser(Windows認証)とhogeuser(SQL認証)の二つのログインアカウントを作成。
・web.configを次のように擬装。
<identity impersonate="true" userName="hogeuser" password="hogeword" />
あるいは
<identity impersonate="true" userName="hoge¥hogeuser" password="hogeword" />
・サーバhogeのadministratosにhoge¥hogeuserを追加。

で、ページを開くと症状も変わらず「SQL Server が存在しないか、アクセスが拒否されました。」のままでした。

他のアプリケーション、例えばaccessのデータリンクやフリーのMSDE管理ツールだと、hogeuserでログインできます。
MSDEにログインアカウントを作っておけばWindows認証でもログインでき、osql -Eも使えるので、多分混合モードでの動作が出来ているってことだと思っているのですが・・・

1

スキルアップ/キャリアアップ(JOB@IT)