none
【VB2010】SQLServerへのODBC接続について RRS feed

  • 質問

  • Windows Server 2008 上で、VisualStudio2010 Expressで
    フォーム上のButton1をクリックし、
    SQLServerへ接続するプログラムを作成しています。

    方式①ですと
    cn.Open()を実行すると、下記のエラーが発生します。
     ERROR[IM002][Microsoft][ODBC Driver Manager]
     データソース名および指定された既定のドライバが見つかりません。
     "C:\Windows\System32\SQLSRV32.dll"があることは確認しております。

    方式②では、
    "TEST_DSN"をODBCデータソースアドミニストレータで作成していますが、
    cn.Open()を実行すると同様のエラーが発生します。
    "TEST_DSN"でSQLServerへ接続できることは、ODBC作成時のテストで確認しています。

    また、cn = New OdbcConnection(str)として、接続情報を渡し、
    cn.Open()の直前でcnをウォッチで確認したところ
    項目:Driverは""となっており、
    項目:ConnectionStringに方式①、②で設定した接続情報が設定されている。
    という状況でした。

    SQLServer側のネットワーク設定に問題がないことは確認しています。
    Windows Server 2008 のファイアウォールの
    SQLServerと接続するポートも受信可としています。

    どこか不具合があるのでしょうか?
    お手数ですがどなたかご回答願います。

    =====================================================================

    Imports System.Data.Odbc
    Imports Microsoft.VisualBasic.FileIO
    Imports System.Net
    Imports System.Text.RegularExpressions
    Imports System.Data.SqlClient
    Imports System.Data.OleDb

    Public Class Form1

        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            On Error GoTo ErrProc

            Dim cn As OdbcConnection
            Dim str As String
            Dim sql As String

            '方式①
            str = String.Format("DRIVER={0}; DATASOURCE={1}; SERVER={2}; DATABASE={3}; UID={4}; PWD={5};", _
                                "C:\Windows\System32\SQLSRV32.dll", _
                                "SQL Server", _
                                "SRV1\SRV_SQL", _
                                "SRVDB", _
                                "USER00", _
                                "PASSWORD")
            'SRV1\SRV_SQLは、SQLServerが稼動しているサーバ名
            'SRVDBは使用するDB名
            'USER00/PASSWORDはSQLServerのユーザID、パスワード

            '方式②
            'str = String.Format("DSN={0}; UID={1}; PWD={2};", "TEST_DSN", "USER00", "PASSWORD")

            cn = New OdbcConnection
            cn.ConnectionString = str

            cn.Open()

            sql = "SELECT * From TBL_A;"

            '以降、データ取得処理を実施。

            cn.Close()

    ErrProc:
            MsgBox(ErrorToString())

            End
    End Sub

     

    2013年5月22日 6:36

回答

  • 質問に対する回答ではありません。
    通常はSqlConnectionを使用しますが、ODBCを使わなければならない理由があるのでしょうか?


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク ちょびこ 2013年5月22日 8:05
    2013年5月22日 7:07
    モデレータ

すべての返信

  • 質問に対する回答ではありません。
    通常はSqlConnectionを使用しますが、ODBCを使わなければならない理由があるのでしょうか?


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク ちょびこ 2013年5月22日 8:05
    2013年5月22日 7:07
    モデレータ
  • 早々のご回答ありがとうございます。下記のサイトを参考に、SqlConnectionでデータを取得できました。 http://homepage1.nifty.com/rucio/main/dotnet/Samples/Sample033ConnectSQLServer.htm
    2013年5月22日 8:05