2017-07-18 50 views
1

タイムアウトexpired.Theタイムアウト期間は、前 操作が完了するまでの経過またはサーバーは、私は、クエリを実行し、タイムアウトエラーを得た `exec sp_updatestats`コマンドの副作用は何ですか?

に応答していません。私はGoogleとstackoverflowからいくつかのソリューションを検索しました。いくつかは、問題を解決するために exec sp_updatestatsを使用してコマンドを実行することを推奨していますが、いくつかは exec sp_updatestatsコマンドを回避することを推奨しています。

exec sp_updatestatsコマンドの副作用は何ですか?

+0

クライアントの譲歩では、どこでクエリを実行しますか?必要なのは、別のタイムアウトを設定することだけです – sepupic

答えて

3

文書によれば、sp_updatestatsは、実行するときに何かをします。

sp_updatestatsは、データベース内のすべてのユーザ定義と内部テーブルには、すべてのキーワードを指定することで、update statisticsを実行します。 sp_updatestatsは、進行状況を示すメッセージを表示します。更新が完了すると、すべてのテーブルの統計が更新されたことが報告されます。 sp_updatestats無効な非クラスタ化インデックスの統計を更新し、無効なクラスタ化インデックスの統計は更新しません。ディスク・ベース表の場合は

sp_updatestatsアップデートので、そのまま列に関する統計の不必要な更新を避け、sys.dm_db_stats_propertiesカタログビューでmodification_counter情報に基づいて更新する必要が統計のみ。メモリ最適化テーブルの統計は、sp_updatestatsの実行時に常に更新されます。したがって、必要以上にsp_updatestatsを実行しないでください。

sp_updatestatsは、ストアドプロシージャまたは他のコンパイル済みコードの再コンパイルをトリガできます。ただし、sp_updatestatsは、参照されるテーブルとそのインデックスに対して1つのクエリプランしか使用できない場合、再コンパイルを引き起こさない可能性があります。このような場合、統計が更新されても再コンパイルは不要です。

互換性レベルが90未満のデータベースの場合、を実行すると、sp_updatestatsは特定の統計情報の最新のNORECOMPUTE設定を保持しません。互換性レベルが90以上のデータベースの場合、sp_updatestatsは、特定の統計情報に対して最新のNORECOMPUTEオプションを保持します。

タイムアウトエラーを解決するには、ストアドプロシージャでこの関数を呼び出さないでください。実行プランを使用して、そのクエリで発生していることとボトルネックを調べる必要があります。欠落しているインデックスを作成し、実行計画を再度確認します。

この関数は、udfsのspsではなく、しばらくの間、保守計画から呼び出す必要があります。

関連する問題