SQL Server Management Studio を使用して大きなテーブルを変更しようとするとエラーが発生する

この記事は、SQL Server Management Studio のテーブル デザイナーを使用して大きなテーブルを変更しようとしたときに発生する問題を解決するのに役立ちます。

元の製品バージョン: SQL Server
元の KB 番号: 915849

現象

Microsoft SQL Server Management Studio のテーブル デザイナーを使用して大きなテーブルを変更しようとすると、次のようなエラー メッセージが表示されることがあります。

テーブルを変更できません。
タイムアウトに達しました。 処理が完了する前にタイムアウト期間が経過したか、サーバーが応答していません。

原因

この動作は、SQL Server Management Studio のテーブル デザイナーとデータベース デザイナーのトランザクション タイムアウト設定が原因で発生します。 この設定は、 Transaction のタイムアウト後 ボックスで指定できます。 既定では、この設定は 30 秒です。

Note

この設定は、SQL Server Management Studio の Execution タイムアウト ボックスの設定とは異なります。 既定では、SQL Server Management Studio のクエリ エディターの Execution タイムアウト ボックスの設定は zero です。 既定では、SQL Server 2000 SQL Query Analyzer のクエリ エディターの Query タイムアウト (秒) ボックスの設定もzero。 そのため、クエリ エディターはクエリが終了するまで無限に待機し、タイムアウトすることはありません。

解決方法

この動作を解決するには、次のいずれかの方法を使用します。

  • テーブル デザイナーの更新のテーブル デザイナーと SQL Server Management Studio のデータベース デザイナー接続文字列タイムアウト値をオフにする場合にクリックします。

  • テーブル デザイナーと SQL Server Management Studio のデータベース デザイナーの Transaction タイムアウト後 ボックスに高い設定を指定します。

  • SQL Server Management Studio の クエリ エディター で Transact-SQL ステートメントを使用して、大きなテーブルを変更します。

これらの設定の詳細については、「 Options (デザイナー - テーブル およびデータベース デザイナー ページ)」を参照してください。

状態

この動作は仕様によるものです。

その他の情報

大きなテーブルの変更には時間がかかる場合があります。 これは、テーブル スキーマを変更しようとすると、SQL Server で次のアクションを実行する必要があるためです。

  1. 同じテーブル スキーマを持つ一時テーブルを作成します。
  2. 実際のテーブルから一時テーブルにすべてのデータをコピーします。
  3. 実際のテーブルを削除します。
  4. 一時テーブルの名前を実際のテーブルの名前に変更します。