A5:SQL Mk-2

開発のこと、日々のこと

実行されたステートメントに対するサーバーの応答が、正しい形式でなかっため・・

ホーム フォーラム A5:SQL Mk-2掲示板 実行されたステートメントに対するサーバーの応答が、正しい形式でなかっため・・

このトピックには10件の返信が含まれ、2人の参加者がいます。2 週間、 3 日前 長谷川 さんが最後の更新を行いました。

11件の投稿を表示中 - 1 - 11件目 (全11件中)
  • 投稿者
    投稿
  • #5613 返信

    長谷川

    お世話になっております。
    エラーが表示されるので、回避方法があれば教えて下さい。
    ■発生するエラー
    プロシージャモードで、以下のエラーメッセージが表示されます。
    「実行されたステートメントに対するサーバーの応答が、正しい形式でなかったため、接続が使用できなくなりました。」

    「Broken packet, data length 5 exceeds fields length 4」
    ■使用環境
    接続先: SQL Server 2008 R2
    A5SQL: version 2.14.3
    ■補足
    このエラーが発生するのは、少々複雑なSQLを実行したときだけで、それ以外では全く問題なく使用できております。
    A5SQLのバージョンを2.13 や2.11 に変えてみましたが、状況は変わりませんでした。
    また、「OLE DB Provider を使わずに直接接続する」オプションの有無でも状況は変わりませんでした。
    検証として、同じSQLを「MS SQL Management Studio」で実行すると、意図する結果が返ってきました。ただ、気になったのは、結果が一度に返って来ずに、数回のまとまりに分割された上で返ってきているようです。

    #5653 返信

    松原正和
    キーマスター

    長谷川さんこんにちは。
     
    このエラーは実行に時間がかかったときに発生するなどでしょうか?。ADOやODBCで登録したデータベースではいかがでしょうか?。
     
    なにか、再現できるようなサンプルSQLをご提供いただけたりするとありがたいのですが…。
     
    タイムアウトなどが発生している可能性もあるのかなと思うのですが、この場合、オプションダイアログから「SQL」タブで、タイムアウト秒数を変更するなどすると変わる可能性もあります。

    #5667 返信

    長谷川

    ご連絡ありがとうございます。

    > このエラーは実行に時間がかかったときに発生するなどでしょうか?
    はい。実行に時間がかかった時に発生しています。

    > タイムアウトなどが発生している可能性もあるのかなと思うのですが、
    > この場合、オプションダイアログから「SQL」タブで、
    > タイムアウト秒数を変更するなどすると変わる可能性もあります。
    こちらの設定は「30」秒でも「6000」秒でも症状は変わりませんでした。
    「0」秒でも変わりませんでした。

    > ADOやODBCで登録したデータベースではいかがでしょうか?。
    ODBC接続時には、
    [Microsoft][ODBC SQL Server Driver]文字列データの右側が切り捨てられました。
    とのメッセージが返ってきます。

    > 再現できるようなサンプルSQLをご提供いただけたりするとありがたいのですが…。
    申し訳ないのですが、どういう条件で発生するかがわかっておりません。
    感覚の話で申し訳ないのですが、
    こちらで扱っている他のSQLより、かなり WITH句 のボリュームがありまして、
    サーバー側での処理が重たいのだろうな、とは感じており、
    それが原因なんだろうとは思います。
    そのため、他のSQLとは、異なった結果の返り方がされているのかしら?という感じ方です。
    あやふやな回答ですみませんです。

    #5677 返信

    松原正和
    キーマスター

    長谷川さんこんにちは。
     
    もしかしたらですが、長いSQLを実行したときに途中のネットワーク機器で、タイムアウトで、セッションが切断されたりしている可能性はないでしょうか。

    #5678 返信

    長谷川

    ご連絡ありがとうございます。
    過去のログを拝見しまして、そのような点も疑ったのですが、実際、SQL Server Management Studio で全く同じSQLを実行しますと、所望の結果が返ってきますので、その点は当たらないのかな、と勝手に考えておりました。
    この時に、SSMSで結果が返ってくる時間は、全体の結果が一覧として返ってくるまでに、5分とかでした。(画面上では、1分ごとに結果の一覧が更新されていって、5分で全体が返ってくる感じ。)
    ところが、A5SQLで同じSQLを実行しますと、エラー自体は、毎回1分程度で返ってきますので、何かが違うのだろうな、と。
    そういう点から、もしお分かりになるようなことがあれば、という思いでした。

    なお、昨日のことですが、SSMSの方で実行計画をみて、SQL自体に手を入れまして、実行を30秒程度まで短縮することができました。(素人なもので。)
    そのため、これなら A5SQL で通るかもしれない、と思ったのですが、残念ながら症状は変わりませんでした。
    (別件になってしまいますが、プロシージャモードでも実行計画が取れるとありがたいですね。)

    なにか、他に情報提供できることが出てまいりましたら、連絡をさせていただきます。
    お忙しいところ御対応ありがとうございました。

    #5711 返信

    松原正和
    キーマスター

    長谷川さんこんにちは。
     
    A5:SQL Mk-2には、無操作が続く場合に、ダミーのSQLをサーバーに投げてネットワーク中のルーター等でセッションが切れないようにする「Keep alive」の機能(デフォルトはOFF)がありますが、SQL実行が長くて無通信状態が続き、セッションが切れてしまう場合はこのオプションは効果がありません。もしかしたらこれが影響しているのかなと思いました。
     
    SSMSではTCPレベルでのKeep aliveで、セッションが切れないようにきちんと制御されているのかなと。結局良く分からないかもしれません。
     
    ところで、ODBCを使っての接続などはどうですか?。もしかしたらこちらなら行けるかも?とも思うのですが。

    #5731 返信

    長谷川

    > ところで、ODBCを使っての接続などはどうですか?。もしかしたらこちらなら行けるかも?とも思うのですが。
    改めてODBC接続での結果を確認してみましたが、前回の報告と変わらず、
    [Microsoft][ODBC SQL Server Driver]文字列データの右側が切り捨てられました。
    とのメッセージが返ってきます。

    #5779 返信

    松原正和
    キーマスター

    長谷川さんこんにちは。
     
    少し調べてみたのですが、「Broken packet, data length 5 exceeds fields length 4」のエラーはDB接続ライブラリであるUniDACが出力しているメッセージでした。UniDACのソースコードは手元にあるのですが、難読化されているソースのため、追うことは難しそうでした。
     
    あと気になるのは、クライアントPCにインストールされているNativeClientのバージョン(SQL Server 接続ライブラリ)のバージョンですが分かりますでしょうか?。
    (A5:SQL Mk-2でDB接続のパラメータを設定する画面の下に、「接続モード:SQL Server Native Client 11 (OLE DB)」などと表示されます。)

    #5794 返信

    長谷川

    ご連絡ありがとうございます。
    クライアントPCにインストールされているNativeClientのバージョン(SQL Server 接続ライブラリ)のバージョンは、
    「接続モード:SQL Server Native Client 10 (OLE DB)」
    と表示されておりました。

    #5841 返信

    松原正和
    キーマスター

    長谷川さんこんにちは。
     
    色々調べたのですが、よくわかりませんでした。
     
    プロトコルレベルのエラーのようにも思えます。多分、サーバーとクライアントのバージョンもあっているのですよね?。
     
    接続ライブラリであるUniDACのバージョンを上げればもしかしたら解決するかも?とも思うのですが、ちょっと今すぐは難しそうです。(Version 2.15.0の正式版までには1回バージョンアップしようと思っています。)

    #5852 返信

    長谷川

    > サーバーとクライアントのバージョンもあっているのですよね?。
    はい。それは確認しました。

    いろいろとお調べいただきありがとうございました。
    接続ライブラリの方で出力されているメッセージであって、ご対応いただくのは難しいということが「分かった」だけでも助かります。
    割り切って、その場合はSSMSを使うことにします。

    A5SQLは、今のままでも十分に有益なソフトです。
    これからも利用させていただきます。
    また、接続ライブラリのバージョンが上がった際には確認させていただきますね。
    ご対応ありがとうございました。

11件の投稿を表示中 - 1 - 11件目 (全11件中)
返信先: 実行されたステートメントに対するサーバーの応答が、正しい形式でなかっため・・
あなたの情報:




コメントは受け付けていません。