2017-10-02 7 views
0

私のアプリケーション(ASP.NET Webサイト)は完全に動作していました。突然 - アプリケーションの更新なし\ change - クライアントはINSERT \ UPDATEを実行する操作のエラーを報告し始めました(タイトルの例外メッセージを参照)。 短い調査の結果、ANY UPDATE \ INSERTクエリが同様のメッセージでに失敗していることが明らかでした。"NHibernate.StaleStateException:予期しない行数:-1" SQL Serverへの更新 insert

クライアントのIT部門は、SQL ServerまたはIISサーバー上でupdate \環境の変更が発生していないと述べています。

何が起こったのでしょうか?

注: 重複した質問のように見えるかもしれませんが、そうではありません。 「が期待:0」とここに同様の質問(例外メッセージ)のほとんどがある

答えて

0

これを研究していくつかの時間を過ごした後、ここでの答えは...

これは通常、「期待」に0+ようです「DMLクエリから返された行数がSQL Serverによって返されましたが、期待されたものとは異なりました」を意味します。一方、-1は「SQL Serverが行カウントをまったく返さない」などを意味します。

有効な接続でSET NOCOUNT ONを使用して、影響を受けた行の数を返すSQL Serverを停止することができますが、アプリの変更がなければ、誰かが私の接続のためにこのオプションを有効にすることはできませんよね?

間違っている!実際には、hereと表示されているように、SQLサーバーには「デフォルトユーザーオプション」と呼ばれるものがあります。 sp_configureを使用してSQL Server MSまたはSQLスクリプトで変更できます。管理者だけがそれを変更することができ、単一サーバーインスタンス上のすべてのデータベースへのすべてのユーザー接続に影響します。私の場合、一部の管理者はデフォルトのオプションをNOCOUNT ONに変更しました。設定をデフォルト値に戻した後、アプリは再び動作を開始しました...

HTH誰か...

関連する問題