none
VBSファイルからSQLサーバーに接続する方法 RRS feed

  • 質問

  • お世話になります。
    不特定多数のWindowsのサーバー上で実行するとSQLサーバー上のテーブルにWMIスクリプトで取得したサーバーのディスク空き容量などの情報を記録するVBSファイルを作成しようとしているのですが、SQLサーバー上で実行すると成功するのに、他のサーバー上で実行すると失敗してしまいます。
    エラーメッセージは以下になります。

    Error: [Microsoft][ODBC Driver Manager]Data source name not found and no default driver specified
    Code: 80004005

    接続文字列を書き換えればなおるのか、そもそもドライバがはいっていないなどの理由で不特定多数のサーバー上での実行はできないのかなにぶん素人なので行き詰っています。
    そこでどこがおかしいのか、どう書き換えればよいのか教えていただけないでしょうか?

    よろしくお願いします。
    *下記コードは関係ない部分は省略して実際のサーバー名等は置き換えています。

    '________________________________________________________

        Set SqlSvrConn = CreateObject("ADODB.Connection")
        Set SqlSvrRs = CreateObject("ADODB.Recordset")
       
    '________________________________________________________
    TString = "'" & Str0 & "'," & "'" & Str1 & "'," & "'" & Str2 & "'," & "'" & Str3 & "'"
       
    SqlSvrConn.Open ("DRIVER={SQL Native Client};Database=InventoryTable1;Server=SQLSvr\SQLEXPRESS;UID=WinAccount;PWS=password;Regional=Yes;WSID=Server;APP=Microsoft Data Access Components;Trusted_Connection=Yes;")
    SqlSvrRs.Open "SET LANGUAGE ENGLISH", SqlSvrConn
    SqlSvrRs.Open "Delete from [ServerInventoryTest] where [ServerName] =" & "'" & Str0 & "'", SqlSvrConn   
    SqlSvrRs.Open "INSERT INTO [ServerInventoryTest] values(" & Tstring & ")", SqlSvrConn
    SqlSvrConn.Close

    2009年6月9日 4:12

回答

  • GX999さま・naginoさま
    ご親切にありがとうございます。
    ドライバをインストールする必要があるということですね。

    最初からデフォルトの環境で実行できないか試行錯誤していたところ、
    {SQL Native Client}の部分を{SQL Server}に変えてみたところ、
    特に何もインストールしなくても実行できました。
    海外の不特定多数のサーバーで実行する・台数が800台くらいあるという理由から
    インストール作業が発生しないので結果的によかったです。
    ありがとうございました。
    また機会がありましたらご相談させていただきます。
    • 回答としてマーク tosaito3 2009年6月9日 8:38
    2009年6月9日 8:37

すべての返信

  • Error: [Microsoft][ODBC Driver Manager]Data source name not found and no default driver specified
    Code: 80004005
    そのままのエラーメッセージが表示されているじゃないですか。
    2009年6月9日 4:19
  • こんにちは、naginoです。

    GX999 様のおっしゃるとおりなのですが、蛇足ながら補足を。

    接続文字列(DRIVER={SQL Native Client};Database=InventoryTable1;Server=SQLSvr\SQLEXPRESS; ~以下省略~)やその他の状況から推測するに、おそらく SQL Server 2005 Express Edition を使用しているサーバに対して、SQL Server Native Client を使用して ODBC で接続しようとしていると思われます。
    その場合、VBS を実行する環境に SQL Server Native Client(要するにドライバ)が必要となります。
    エラーメッセージや状況から、おそらくエラーとなるサーバーにはインストールされていないのだと思われます。

    そうであれば、VBS を実行する環境に SQL Server Native Client をインストールするか、接続文字列を変更して別の方法で接続するようにするか、いずれかが対処方法になります。

    ちなみに、以下のいずれかの方法で SQL Server Native Client SQL Server 2005 をインストールすることができます。
    http://www.microsoft.com/downloads/details.aspx?FamilyID=d09c1d60-a13c-4479-9b91-9e8b9d835cdc&displaylang=ja (インストーラが単体で配布されています)
    http://msdn.microsoft.com/ja-jp/library/ms131334(SQL.90).aspx (SQL Server 2005 のインストール用メディアがある場合)
    http://msdn.microsoft.com/ja-jp/library/ms143219(SQL.90).aspx (インストールするコンポーネントとして接続コンポーネントを選択します)
    SQL Server Native Client をインストールするだけであれば、1 つ目のリンクが一番楽だと思います。

    ただ、VBS を実行する環境が「サーバー」とありますので、セキュリティ等の考慮が必要かと思います。
    上記のようなコンポーネントをインストールすることを良しとするかどうかは tosaito3 様の環境・ポリシー次第ですので、その点ご留意ください。

    なお、接続するために必要な設定は上記に限りません。
    上記対応をされても別のエラーが発生する可能性がありますので、その点もご留意ください。


    MCITP(Database Developer/Database Administrator)
    2009年6月9日 7:00
  • GX999さま・naginoさま
    ご親切にありがとうございます。
    ドライバをインストールする必要があるということですね。

    最初からデフォルトの環境で実行できないか試行錯誤していたところ、
    {SQL Native Client}の部分を{SQL Server}に変えてみたところ、
    特に何もインストールしなくても実行できました。
    海外の不特定多数のサーバーで実行する・台数が800台くらいあるという理由から
    インストール作業が発生しないので結果的によかったです。
    ありがとうございました。
    また機会がありましたらご相談させていただきます。
    • 回答としてマーク tosaito3 2009年6月9日 8:38
    2009年6月9日 8:37