none
SQL SERVER EXPRESSへのWindows認証による接続について RRS feed

  • 質問

  • 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にデバッグ実行では発生しません。

    これは仕様でしょうか。いろいろと調べてみたのですが、仕組み等分からず、独力で解決ができませんでした。

    ご教授頂ければと思っております。

    2015年3月5日 12:08

回答

すべての返信

  • Windows 認証に間違いないのですよね(id と password の指定があるのが解せませんが)。とすると、以下のような話なのでしょうか?

    Windows Vista から SQL Server に接続する方法
    https://technet.microsoft.com/ja-jp/library/bb326612(v=sql.105).aspx

    ハズレだったらすみません。

    • 回答としてマーク 行徳ki 2015年3月14日 7:27
    2015年3月5日 13:15
  • ご回答ありがとうございます。

    >既定では、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単体で動作させた記憶があいまいなため、戻った時に同様の現象が起こるか確認したいと思っております。お騒がせし、申し訳ありません。

    ありがとうございました。

    2015年3月6日 13:09
  • SQL Server は WORKGROUP 内の別マシンで、それにアプリ(何ですか?)をインストールした別の Vista マシンからリモート接続しているのですか? 本当に Windows 認証なのですか? 名前解決の問題もあるのでしょうか? 全体的にどういう環境・構成になっているか具体的に説明できるでしょうか? 質問者さんはどのぐらい知識をお持ちなのでしょうか?


    • 編集済み SurferOnWww 2015年3月7日 1:59 一部訂正: exe ⇒ アプリ(何ですか?)
    2015年3月6日 14:23
  • hostsファイルに明記してみるとか、サブネットマスクが一致しているとか、その辺りの問題かもしれませんね。

    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク 行徳ki 2015年3月14日 7:27
    2015年3月7日 5:51
  • ご回答ありがとうござます。

    しばらく別の業務にて、本業務に着手できておりませんでした。

    環境は、一台のPCにSQL Server をインストールし、VB .net で作成した台帳システム(EXE)を動かしています。(開発環境)。本番環境も同様に1台のPCです。リモート接続は、しておりません。Windows認証で行っております。

    事情があってPCを丸ごと別のネットワークにもっていき、IPアドレスをしていたところ、上記のような問題が起きていました。(台帳管理システムを「管理者として実行」しないと1回目の接続のみ、「時間切れ」がおきる。2回目から接続できる)

    本日、元のネットワークに戻り、元の固定IPを振りなおしたところ、問題は、発生しなくなりました。「(台帳管理システムを「管理者として実行」しなくても時間切れがおきない。)」

    名前解決については、一時的に移動したネットワーク内で、ほかのPCからこの開発PCにできていたか確認できていません。取り急ぎ、開発を進め、今回の原因については、SQLSverver、ネットワーク環境等、もっと勉強したうえで、考えていきたいと思っております。

    ありがとうございました。

    2015年3月14日 7:17
  • ご回答ありがとうございます。              

    >hostsファイルに明記してみるとか、サブネットマスク一致しているとか、その辺りの問題かもしれませんね。

    元のネットワーク環境にもどり、問題が発生しなくなりましたが、上記の点も踏まえ、もう少し勉強して原因を考えてみます。

    ありがとうございます。

    2015年3月14日 7:19