問題タブ [nocount]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql-server - SQL サーバークエリで NOCOUNT をオフにすることの利点と欠点は何ですか?
NOCOUNT
SQL サーバー クエリでオフにすることの利点と欠点は何ですか?
sql - SET NOCOUNT OFF または RETURN @@ROWCOUNT?
Sql Server 2008 データベースにストアド プロシージャを作成しています。影響を受けた行数を返したい。SET NOCOUNT OFF と RETURN @@ROWCOUNT のどちらがよいでしょうか?
どちらも機能することはわかっていますが、どちらがより良い選択であり、その理由は何ですか?
いくつか試した結果、ストアド プロシージャ内ではデフォルトで SET NOCOUNT が OFF であるという結論に達しました。データベース内でこの動作を変更することは可能ですか?
sql - SET NOCOUNT ON とカーソル
複数のストア プロシージャを呼び出すストアド プロシージャがあり、それぞれがダミー データをそれぞれ 1 つのテーブルに挿入します。カーソル内のループごとに 1 行の結果が表示されることを除いて、正常に動作します - ClubcardId = 2、ClubcardId = 3 などを表示するだけです。
SET NOCOUNT ON を使用しましたが、これは役に立たないようです。数百万行を作成するためにこのストアド プロシージャを探しているので、各行の結果を SQL で出力することが問題になります。
出力が表示されないようにする方法を教えてください。以下の親ストアド プロシージャをコピーしました。表示が子ストアド プロシージャ lap_CreateClubcardTransaction からのものではないことは確かです。
私が変更した場合:
...に:
...次に、カーソルの各行に表示される値「TEST」を取得します。
親のストアド プロシージャは次のとおりです。
c# - MicrosoftSyncFrameworkがNhibernateTooManyRowsAffectedexceptionと衝突する
NHibernateを使用してドメインを永続化するアプリケーションにMicrosoftSyncFrameworkを実装しようとしています。
私たちが遭遇した問題の1つは、同期フレームワークが初期データベース構造を変更した後(シャドウテーブルとトリガーを追加した後)、データベースにオブジェクトを挿入しようとしたときにtoomanyrowsaffectedexceptionをスローすることでNHibernateが動揺しているように見えることです。
各更新ステートメントの周りにSETNOCOUNTONとOFFを追加するソリューションがあるこの記事を見つけましたが、テーブル構造はnhibernateによって自動的に生成され、同期トリガーは同期フレームワークによって自動的に生成されるため、すべてのトリガーを手動で調整することは実際にはオプションではありません。
http://www.codewrecks.com/blog/index.php/2009/03/25/nhibernate-and-toomanyrowsaffectedexception/
この質問で説明されているように、SQL Server 2008のプロパティNOCOUNTをオンに設定してみました:NOCOUNTを設定するのに最適な場所はどこですか? ただし、これによりStaleStateExceptionが発生しました(-1行が影響を受け、1行が予想されます)。
トリガーにこれらのNOCOUNTステートメントを自動的に設定するように同期フレームワークを構成する方法があるかどうか知っていますか?または、NHibernateに変更された行の数を増やす/減らすように指示する方法はありますか?あるいは、これらのNOCOUNTステートメントを同期フレームワークのトリガーに追加する自動化されたスクリプトを持っている人もいるかもしれません。
事前にThx!
sql-server - レプリケーションのシステム トリガーと NOCOUNT オプション
Sql Server 2008 でレプリケーションをセットアップすると、サブスクライブしているデータベースへのデータの転送を容易にするために、システムはレプリケートされたテーブルごとにトリガーを作成します。
システムによって生成されたトリガーがSET NOCOUNT ON
、そのアクションが関数の値に影響を与えるのを防ぐために使用することは、予期される動作でしょう@@ROWCOUNT
か?
バックグラウンド
Sql Server 2008 バックエンド データベースで NHibernate を使用しています。データベースでは、サブスクライバーへのデータ転送を容易にするために、パブリッシュされたテーブルにシステム生成トリガーを作成するレプリケーションが有効になっています。
レプリケーションがなければすべて正常に動作しますが、レプリケーションを使用すると、影響を受ける NHibernate の行の検証チェックが失敗します。ADO.Net が影響を与えたと言う行数には、コマンド自体の影響を受ける行に加えて、関連するトリガーの影響を受ける行が含まれているようです。
元の質問で Sql Server 関数について言及しましたが、本当の意味は、ADO.Netメソッド@@ROWCOUNT
によって返される「影響を受ける行」の値です。ExecuteNonQuery
私は、後者が前者によって供給されたという仮定に (おそらく間違って) 取り組んでいたと思います。
一時的な解決策として、レプリケーション トリガーを変更して、SET NOCOUNT ON
更新前に を追加し、更新が完了した後にこれを元に戻すようにしました。これで当面の問題は解決しますが、実行可能な恒久的な解決策ではありません。私たちが受け取ったアドバイスと常識によれば、システムトリガーを編集することはお勧めできません。
ただし、これは、正確な問題を特定したことを示唆しています。トリガーの影響を受ける行は、現在のコマンドの影響を受ける最終的な行数に含まれています。NHibernate は既知の数の行のみが影響を受けることを想定しており、(NHibernate に関する限り) 不明なトリガーがこの数に追加されることを想定していません。
現在、NHibernate を拡張してこれに対処する機能を追加するか、少なくともこれを抑制するオプションを調査中です。私たちのリソースには、この SO の質問が含まれています。
また、システムによって生成されたトリガーがデフォルトで NOCOUNT オプションをすでに ON に設定しているため、それらを変更する必要がないことを示唆しているように見えるこの投稿も見つけました。これは私たちには絶対に当てはまらないので、なぜそうなのかと思っていました。
- システム生成トリガーに関するデフォルトの状況は何ですか?
- 動作は構成可能ですか?
- レプリケーションのタイプ (マージ、トランザクション) に依存しますか?
sql - SETNOCOUNTONを含めるためのストアドプロシージャの全面的な更新の結果は何ですか
SQLストアドプロシージャを呼び出すための新しいデータアクセスフレームワークを導入しました。レコードセットを返すストアドプロシージャを呼び出すと、そのストアドプロシージャが何らかの更新(挿入/更新/削除)も実行するという問題が発生しました。
コマンドオブジェクトをソースとして持つRecordsetオブジェクトのActiveConnectionプロパティを変更することはできません。
これに対する解決策は、ストアドプロシージャの先頭に「SETNOCOUNTON」を追加することです。これは問題なく機能し、もちろん、パフォーマンスの向上も宣伝されています。
開発者には、既存のストアドプロシージャを呼び出すコードを記述したい場合は、ストアドプロシージャ自体もリファクタリングしてを含める必要があることをお勧めしますSET NOCOUNT ON
。
しかし、これにより、すべてのストアドプロシージャを包括的に更新して、を含めることの潜在的な結果/リスクはどうなるのか、疑問に思いましたSET NOCOUNT ON
。これはどのようなシナリオでSPの機能を壊しますか?(SET NOCOUNTがONの場合でも、@@ ROWCOUNT関数が更新される場合)
いつものように、助けてください。
sql - ストアドプロシージャで「SETNOCOUNTOFF」は必要ですか?
私は持っている多くの手順がありset nocount on
ます。
ストアドプロシージャの最後にオフにする必要がありますか?
例えば:
.net - 内部でカーソルを使用するストアド プロシージャによって返される影響を受ける行数をオーバーライドする
次のコードに簡略化されたストアド プロシージャがあります。
それでもExecuteNonQuery()
-1 を返します。
使用できますがselect @count
、ExecuteScalar()
コードが機能しない理由を理解したいです。
サーバーの動作をNOCOUNT OFF
リセットせず、NOCOUNT ON
まだそのままのようです。
sql - Powershell と SQL Server - nocount を設定
データベースから学生のリストを取得するための powershell 関数を作成していますが、返される最初の項目は常にレコードの数です。set nocount on をスクリプトに組み込む方法がわかりません - 何かアイデアはありますか?
これまでの機能は次のとおりです。
素敵なテーブルが返されますが、最初の行は常に最初のレコード数です。その出力を抑制する必要があるだけです。