1

Microsoft の従業員から提供されたスクリプトを実行して、平均的な断片化に応じて、どのインデックスを再構築/再編成する必要があるかを調べます。合理的なリストを取り戻しましたが、特定のデータベースでそれらのいくつかを再構築しようとしている間、エラーが発生し続けました:

ロック要求のタイムアウト期間を超えました

私が最初に思いついたのは、データベースをシングル ユーザー モードに設定し、インデックスを再構築してから、元に戻すというものでした。皮肉なことに、私が接続している同じユーザーを使用し、そうするのに十分な権限を持つ唯一のユーザーを使用する Windows サービスによってデータベースが作成されているため、それは役に立ちませんでした。私は企業環境で作業しているので、別のユーザーの資格情報を取得するよりも月が少し近づいています。また、他の多くの目的で使用されるため、タスクの実行中にサービスを停止することもできません。

私の質問は簡単です: シングル ユーザー モードを強制して単一の接続ソースを強制するにはどうすればよいですか? つまり、データベースまたは最終的に SQL サーバーをサービスから非表示にする方法は? ネットワークの問題として不在を正しく処理するので、その部分について心配する必要はありません。

4

3 に答える 3

0

SQL Server 2005 以降でインデックスを再構築するときに使用できる ONLINE = ON/OFF オプションがあり、ユーザーが基になるテーブルにアクセスする方法を制御して、問題を解決できる場合があります。

http://msdn.microsoft.com/en-us/library/ms188388(v=sql.110).aspx

于 2013-04-04T11:54:49.280 に答える
0

あなたの問題は、インターフェイスが失敗することを決定する前に一定の時間だけ待機することです。私はいつもこれに遭遇します。

変更をスクリプト化して手動で実行することもできます。これにより、現在インデックスを使用しているユーザーによってすべてのロックが解放されるまで待つことができます。ただし、注意が必要です。インデックスを再構築すると、実行中はインデックスがロックされます (もちろん、再構築がオンラインで、すべてがお金でできているエンタープライズ エディションを使用している場合を除きます)。

于 2013-04-05T19:34:30.550 に答える