none
Execute メソッド (ADO Command)でストアドを呼び出した際の結果セットについて RRS feed

  • 質問

  • お世話になります。

    VBAからADODB.CommandオブジェクトのExecuteメソッドを用いて、SQLServerのストアドプロシージャを実行するプログラムがあります。

    (サンプル)
        Set cmd = New ADODB.Command
        Set cmd.ActiveConnection = [コネクション]
        cmd.CommandText = [ストアド呼び出しのSQL]
        Set rst = cmd.Execute

    SQLServer2005のデータベースに対して、上記方法でストアド呼び出しを行った場合、
    処理中に警告(ex:警告: NULL 値は集計またはその他の SET 演算で削除されました。)が発生しても、結果セットが正常に返却されます。

    しかし、SQLServer2012のデータベースに対しての場合には、
    処理中に警告が発生すると結果セットには何も返却されません。

    上記バージョンの違いによる返却値の差異につきまして、公式のドキュメントが見当たらなく困っております。
    ご存知の方がいましたら、ご教示頂きたく存じます。

    宜しくお願い致します。
    2016年12月2日 6:26

回答

すべての返信

  • ここらへんかな?

    バージョンの違いによる差異ではなく、「バージョンの違いによる設定の違い」による結果の差異かなと

    ・・・でもだとしたらSQL Server 2005と2012は一緒な気もする。。。

    2016年12月2日 11:49
  • ご提示頂いたページの下記記述に該当しました。

    >ANSI_WARNINGS を ON に設定すると、データベース互換性レベルが 90 以上に設定されている場合、暗黙的に ARITHABORT が ON に設定されます。 データベース互換性レベルが 80 以下に設定されている場合、ARITHABORT オプションを明示的に ON に設定する必要があります。

    質問時にSQLServer2005のデータベースと記載していましたが、実際のデータベースの互換性レベルは80(SQLServer2000準拠)となっておりました。失礼致しました。

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



    • 編集済み k-k88 2016年12月7日 2:49
    2016年12月7日 2:43