問題タブ [command-timeout]
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.
session - 新規および既存のセッション コマンド タイムアウト値の変更
私は独学の DBA であり、いじるのが好きなエンジニアでいっぱいの製造環境で働いています。私は彼らに sysadmin や明示的な特別な権限を与えていませんが、「キラー」クエリを実行している一部のエンジニアに問題があり、一部のエンジニアは非常に集中的です。これは通常、接続のデフォルトの Command Timeout が 30 秒であることを考えると問題にはなりませんが、これらのエンジニアの中には、純粋にオートコンプリート機能のために SQL Developer を購入した人もいます。もちろん、これはデフォルトで無限の「CommandTimeout」に接続します。
私がやりたいことは、何らかの方法で、新しい接続/セッションのいずれかまたは両方を変更し、それらの CommandTimeout をより合理的な、おそらく 30 秒未満に設定することです。新しい接続の場合、コンテキストの下でコマンドを実行するある種のデータベーストリガーを想定していますか? 既存の接続、おそらくシステム テーブルに何か恐ろしいものがありますか?
.net - すべての新しいコマンド オブジェクトにカスタムのデフォルト CommandTimeout を設定する
デフォルトのCommandTimeout値は 30 秒です。次のようにして、コマンド オブジェクトのインスタンスの値を手動で変更できます。
すべての新しいコマンド オブジェクトが、作成時にソリューション内で自動的にこの値を持つように、別の既定値を指定する方法はありますか?
c# - Session.Query を使用して Nhibernate LINQ コマンド タイムアウトを設定する方法
UnderlyingCriteria
を使用するときに を設定する方法を知っている人はいSession.Query
ますか?
1 つの特定のクエリに対して、より制限的なコマンド タイムアウト (またはクエリ タイムアウト) を設定しようとしています。セッション内の接続または他のクエリにその制約を追加しないようにしています。
古いQueryOver
機能で、このようなものを使用できることがわかりました
それに関する問題は、それが古く、バグが多く、機能上の問題がたくさんあることです。
を使用Query
すると、IQueryable<T>
IQueryable
コマンドタイムアウトなどへの明らかなアクセス権がないMSクラスです。
別のオプションは、その時点ですべてのコマンドのセッションコマンドタイムアウトを何らかの方法で設定し、その後デフォルトに戻すことですが、コマンドタイムアウトを前もって設定してそのままにしておく以外に、これを行うためのパブリックメカニズムは見当たりません。NHibernate LINQ ステートメントのタイムアウトを設定する方法
sql-server - アクティブなデータベースに対して長いクエリを実行する適切な方法は何ですか?
私たちは SQL Server 2012 EE を使用していますが、現在 R/O ミラーでクエリを実行するオプションはありませんが、それは私の長期的な目標ですが、ミラーがまた、私が照会しているデータを更新しています。
2 つのデータベースの複数のテーブルを結合するビューがあり、既存のデータからの請求に使用されます。これらのテーブルのうち 3 つも、進行中のトランザクションによって積極的に更新されます。このビューを使用するレポートを実行することは以前は問題ではありませんでしたが、データベースが大きくなり、タイムアウトの問題が発生しました。最初にクエリがタイムアウトしたため、コマンド タイムアウトを 0 に設定し、4 つの CPU すべてを 90 分間 100% 固定するクエリを再実行してから、強制終了しました。その間、アクティブなトランザクションに問題はありませんでした。クエリを確認したところ、インデックスが作成されていない参加しているフィールドが見つかったので、そのフィールドにインデックスを作成し、レポートを再実行しました。レポートは 3 分で終了し、すべての CPU はビジー状態でしたが、固定されていませんでした。両方の回で同じデータ量がクエリされました。私は問題が解決したと考えました。もちろんその後、私の上司は同様のクエリを実行しました。データは多少多いかもしれませんが、それほど多くはないかもしれません。クエリの実行中に、ライブ トランザクションが 100% タイムアウトし始めました。その間、CPU 使用率を確認する機会がありませんでした。
だから私の質問は2つです:
ライブおよびアクティブなデータベースを使用する必要がある場合、アクティブなトランザクションを継続できるように長い R/O クエリを実行する適切な方法は何ですか? NO LOCK を検討していますが、より良い標準的な方法があることを願っています。
そして、sqlserver が 100% ビジー状態で 4 つの CPU をペグアウトし、ライブ トランザクションのタイムアウトを引き起こさない可能性がありますが、上司がクエリを実行したときに、インデックスを追加してクエリがはるかにうまく実行された後、ライブ更新トランザクションが 100% タイムアウトし始めます。 ?
これは多くの情報ではないことはわかっています。私はSQLプロファイリングとパフォーマンス監視にあまり詳しくありませんが、この動作はかなり奇妙に思え、ベストプラクティスが正しい回避策になることを望んでいます.
c# - カスタム CommandTimeout を使用した WebMatrix Database.Query
TestTable と Procedure を持つ次の TestDb を検討してください
WebMatrix 組み込みデータベース クエリ ヘルパーを使用すると、次のことができます。
WebMatrix Database.Query ヘルパーがデフォルトの 30 秒の CommandTimeout を固定しているため、これによりタイムアウトの期限切れエラーが発生します。個々のクエリのデフォルトを 5 分程度にオーバーライドする方法はありますか?
解決策が見つからなかったため、多数の検索に基づいて独自の SimpleQuery ヘルパーを作成し、理解して適応できるコード リファレンスを最終的に見つけるまで試行錯誤しました。
新しい SimpleQuery ヘルパーを使用するように Web コードを変更したので、ほぼ同等の結果を得ることができますが、いくつか問題があります。
問題 1 ~ 3 は、SimpleQuery ヘルパーを使用している 2 番目の Web コードでコメントされています。これらは回避できますが、まだ苦労しているのは、数値と日付の値に対して NULL チェックが検出されない理由です。
Double.Parse または DateTime.Parse. また、SimpleQuery ヘルパーまたはその他の表示に関する一般的な指針/改善点もあれば幸いです。
前もって感謝します。
c# - 部分クラス テーブル アダプタが null です
ReportViewer で使用される ObjectDataSource に CommandTimeout を設定したいと考えています。
部分クラスを作成しましたが、デバッグで TableAdapter をクリックしてプロパティを展開するまで、TableAdapter は null です。その後、TableAdapter は値を取得します。
コードは次のとおりです。
そして私の部分的なクラスコード:
c# - DbDataAdapter.Fill を使用して CommandTimeout が無視される
以下のコードで CommandTimeout を機能させることができないようです。動作を確認するためだけにタイムアウト値を 1 秒に設定しましたが、無視されているようです。SELECT ステートメントの実行には約 15 秒かかり、完了するまで実行されます。1 秒後にタイムアウト例外が発生することを期待しています。これを行う方法の例を見つけるためにインターネットを検索しましたが、何も見つかりませんでした。私は何を間違っていますか?
更新:
実行に 30 秒以上かかる SELECT コマンドを作成しました。これもタイムアウトしません。CommandTimeout 行もコメントアウトしましたが、それでも完了まで実行されました。そのため、デフォルトの CommandTimeout である 30 秒も無視されているようです。私は困惑しています...どんな助けでも大歓迎です。
更新:
私はそれを理解したかもしれないと思います。非常に複雑な SELECT ステートメントを記述したときに、コマンド タイムアウト例外が発生したようです。単純な SELECT コマンドを使用すると、コマンドの実行に 1 秒もかからず、データ セットのロードにさらに 15 秒かかるということで何が起こっているのかを推測することしかできません。私はここで正しい軌道に乗っていますか?これはありそうですか?