VB2010からSQLSarverに接続できなません。環境の問題でしょうか?

MicrosoftVisualStudio2010ExpressでVBアプリを開発しています。
私が構築したMicrosoftSQLServer2008Expressとの間では、問題ない接続できています。
一方、業者さんが構築したサーバー(以下、業者サーバー)上のMicrosoftSQLServer2008に接続しようとすると、以下のコーディングのOpenでエラーとなります。ExcelからODBCを使用して接続すると正常にデータを参照できますので、ODBCの定義に問題はないように思えます。
ちなみに、業者サーバーではファイヤーウォールの設定はしていません。SQLServerBrowserも動作しています。
MicrosoftVisualStudio2010ExpressのアプリからExpressでないMicrosoftSQLServerには接続できないのかといった疑問など錯綜し、何がエラーの原因なのか判断できずに困っています。
詳しい方がおられましたら、疑うべき点など含めてアドバイス頂ければ幸いです。

コーディングは、
Dim cn As New SqlClient.SqlConnection()
Dim cmd As SqlClient.SqlCommand()
Dim dr As SqlClient.SqlDataReader
Dim strSQL AS String
Dim conSTR AS String = 'Data Source=SQLサーバー名;Initial Catalog=DSN名;User ID=ユーザー名;Password=パスワード'
省略
Cn.ConnectionString = conSTR
Cn.Open()
cmd.Connection = Cn
です。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2012/07/31 17:50:03

ベストアンサー

id:freemann No.1

回答回数335ベストアンサー獲得回数55

Visual StudioのExpress版では、同一PC内のSQLServerにはアクセスできたと思いましたが、別PCへの接続はできなかったと記憶しています。

id:rarachojiro

いいえ、別PCのSQLServer(Express)には接続できています。

2012/07/25 13:19:34
id:freemann

申し訳ありません。

もしかしたらVisual Studioの機能の(今はない?)Server接続というやつのことだったかもしれません。

的外れな回答で申し訳ありません。

2012/07/25 21:21:17
  • id:degucho
    エラー内容はなんですか?
    DSNではなく直接接続はできますか?
    http://jeanne.wankuma.com/tips/csharp/sqlserver/open.html
  • id:rarachojiro
    コメント有り難うございます。

    先に書きましたコーディングでのエラー内容は次のような内容でした。
     → このログインで要求されたデータベース "(DSN名)" を開けません。ログインに失敗しました。
       ユーザー '(ユーザー名)' はログインできませんでした。"

    ご指摘のサイトのコーディング例にもとづいてテストしてみました。

    -----------------------------------------------------------------------
    Dim stConStr As String = String.Empty

    Dim conSTR As String = "Data Source=SERVER¥SMILEBS;Initial Catalog=smile;User ID=smilea01;Password=smilea01;"

    Function ProductM_GetS()

    Dim retVal As String
    retVal = ""

    stConStr &= "Data Source = (物理サーバー名)¥(SQLサーバー名);"
    stConStr &= "Initial Catalog = (DSN名);"  → ※ SQLServer のデータベース名にしたパターンも実施。結果は同じ
    stConStr &= "Integrated Security = SSPI;"

    Dim cSqiCon As New System.Data.SqlClient.SqlConnection(stConStr)

    cSqiCon.Open()

    MsgBox("connect")

    cSqiCon.Close()
    cSqiCon.Dispose()

    Return retVal

    End Function
    -------------------------------------------------------------------

    結果は、"ユーザー 'SERVER¥Guest' はログインできませんでした。" でした。

    最初のエラーメッセージは、接続はできていてログイン認証でエラーが発生していることを意味するのでしょうか?
    もし、そうだとするとvbからの認証だけ何故できないとかということに焦点をあてることになりますね。
  • id:freemann
    C#のサイトですが、次が参考になりませんでしょうか。

    http://www.oborodukiyo.info/ADONET/VS2008/ADONET-HowToAccessSQLServer.aspx

    接続情報は、SqlConnectionStringBuilderの変数を使うのが便利かと思います。

    DataSourceはSQLServerのインスタンス名、InitialCatalogはデータベース名(Northwindなど)です。
  • id:rarachojiro
    色々と可能性を探って頂き有り難うございました。
    問題は解決しておりませんが、コーディング上の問題ではないような感がしています。
    一度、SQLServerのユーザー権限の観点から問題がないかを探ろうと思います。
    一旦、質問を終了させて頂きます。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません