1

これは、私が尋ねたこの前の質問からの継続的な質問です: SQL Server でデータベース列の設計を変更する

テーブル定義を変更しようとしているテーブルは非常に大きい (4137631 行) ため、Management Studio は、変換プロセス中にテーブルにアクセスできず、完了するまでに時間がかかる可能性があると言います。

そのため、状況に対処する方法についてアドバイスが必要です。

  • 変更を行うには、アフター オフィス アワーまで待つ必要がありますか?
  • どのくらいの時間がかかりますか?
  • または、テーブル定義を変更する他のより高速な方法はありますか (varchar から nvarchar)

前もって感謝します。

4

5 に答える 5

1

alter table / alter column を使用してスクリプトを作成します: http://msdn.microsoft.com/en-us/library/ms190273.aspx

ただし、最初に同じ構造のテストテーブルを作成し、次にスクリプトをストアドプロシージャとして作成し、最初にこのテーブルでテストを行い、完全に機能する場合は、夜間に 1 回実行するように SP をスケジュールします。ユーザーに害はありません:)

于 2012-05-10T08:08:23.140 に答える
1
  • データベースがまったく使用されなくなるまで、ジョブをスケジュールする必要があります。それができない場合は、まずデータベースをオフラインにします。

  • 正確に教えてくれる人はいないでしょう。

  • ALTER TABLE最初にテーブル全体をコピーしたくない場合を除いて、これが唯一のオプションです (その場合、参照整合性の問題が発生しますが、お勧めしません)。

于 2012-05-10T06:25:45.677 に答える
1

変更されている列はインデックスの一部ですか? そうでない場合

  1. データベースに新しい列 (nvarchar) を追加する
  2. 元の列のデータで列を更新します
  3. 元の列をドロップします
  4. 新しい列の名前を変更する

スクリプトとして実行することを好みます。テスト システムで上記の手順を試すことができます。理想的には、他のどのアプローチよりも高速である必要があります。

于 2012-05-10T06:42:19.997 に答える
0

ベスト プラクティスは、別のデータベースを Test として作成し、運用データベースのコピーを復元してテストし、スクリプトを実行してテーブルを変更することです。その時点から、変更後の状況を決定できます。

ライアン A.

于 2012-05-10T07:26:43.797 に答える
0

質問への回答
1) これはメンテナンス アクティビティであるため、営業時間内には実行しないでください
。2) 所要時間は、ハードウェア、ネットワーク速度、および表のデータ量によって異なります。行数は、データ量の適切な尺度ではありません。あなたが言ったように、すべての整数と同じ数の行を3列しか持つことができません。お分かりでしょうが。
3)その質問にコメントを入れました。

于 2012-05-10T11:23:50.203 に答える