トップ回答者
SQL SERVER EXPRESSへのWindows認証による接続について

質問
-
VB .NET(VS 2008 .net framework3.5)にてSQLServerExpressにデータを登録する台帳システムを開発しております。
Provider=SQLOLEDB;Data Source=***-PC\SQLEXPRESS;User Id=S****_ADMIN;Password=DB***;Initial Catalog=SHINRIN;Integrated Security=SSPI;
という接続文字列で、OleDbConnectionにて接続しております。
WindowsXPでは、作成したEXEをダブルクリックするだけで接続できました。
現在WindowsVistaで開発していますが、作成したEXEを実行するとOleDbConnectionのOpen()メソッドで「時間切れになりました」 SQLstate HYT00 というエラーが発生しデータベースに接続できません。
作成したEXEを右クリックより「管理者として実行」とするとこのエラーは発生せず、データベースに接続できます。また、VisualStudioにデバッグ実行では発生しません。
これは仕様でしょうか。いろいろと調べてみたのですが、仕組み等分からず、独力で解決ができませんでした。
ご教授頂ければと思っております。
回答
すべての返信
-
ご回答ありがとうございます。
>既定では、Windows Vista のユーザーが Windows Administrators グループのメンバであっても、そのユーザーに SQL Server への接続権限は自動的に付与されません。
Windows Vista におけrSQL Server の接続に関して大変勉強になりました。ありがとうございます。
こちらのページにある、Windows ユーザーを固定サーバー ロール sysadminに 追加する方法を確認いたしましたが、現在のログインユーザー(Administrators グループ)は、sysadminに追加されていました。
また、途中で気付いたのですが、1回目の接続の時、時間切れになるのですが、EXE起動中、2回目以降に接続すると、このエラーが発生せず接続できることがわかりました。
1回目の接続で「時間切れ」となったとき、イ「ベントビューアのエラーにnetbt「名前 "WORKGROUP :1d" は、IP アドレス 192.168.0.10 のインターフェイスに登録できませんでした。 IP アドレス 192.168.0.7 のコンピュータは、その名前がこのコンピュータに付くことを 許可しませんでした。」
というエラーが発生していました。実は、現在、もともとの開発環境と一時的に別の場所で開発しており、IPアドレスも動的に取得して、本来の開発環境の固定IPアドレスとは異なっている状況です。ちなみに192.168.0.7は、Canonのインクジェットプリンターです。このため、原因はよくわかりませんが、接続が一度時間切れになるのは、このエラーが発生していることが原因かもしれません。
元の開発環境にて、EXE単体で動作させた記憶があいまいなため、戻った時に同様の現象が起こるか確認したいと思っております。お騒がせし、申し訳ありません。
ありがとうございました。
-
SQL Server は WORKGROUP 内の別マシンで、それにアプリ(何ですか?)をインストールした別の Vista マシンからリモート接続しているのですか? 本当に Windows 認証なのですか? 名前解決の問題もあるのでしょうか? 全体的にどういう環境・構成になっているか具体的に説明できるでしょうか? 質問者さんはどのぐらい知識をお持ちなのでしょうか?
- 編集済み SurferOnWww 2015年3月7日 1:59 一部訂正: exe ⇒ アプリ(何ですか?)
-
ご回答ありがとうござます。
しばらく別の業務にて、本業務に着手できておりませんでした。
環境は、一台のPCにSQL Server をインストールし、VB .net で作成した台帳システム(EXE)を動かしています。(開発環境)。本番環境も同様に1台のPCです。リモート接続は、しておりません。Windows認証で行っております。
事情があってPCを丸ごと別のネットワークにもっていき、IPアドレスをしていたところ、上記のような問題が起きていました。(台帳管理システムを「管理者として実行」しないと1回目の接続のみ、「時間切れ」がおきる。2回目から接続できる)
本日、元のネットワークに戻り、元の固定IPを振りなおしたところ、問題は、発生しなくなりました。「(台帳管理システムを「管理者として実行」しなくても時間切れがおきない。)」
名前解決については、一時的に移動したネットワーク内で、ほかのPCからこの開発PCにできていたか確認できていません。取り急ぎ、開発を進め、今回の原因については、SQLSverver、ネットワーク環境等、もっと勉強したうえで、考えていきたいと思っております。
ありがとうございました。