回答:
以下のようなT-SQLステートメントを使用して実行している場合、テーブルのドロップは発生せず、運用環境で安全に実行できます。
alter table <table> alter column <column> nvarchar(biggernumber) [not] null
SSMS Design Table GUIを使用して実行する場合、変更を実装するために使用することを決定したスクリプトに依存します。一時テーブルにデータを挿入し、元のテーブルを削除し、そのテーブルの新しいバージョンを作成して、新しいテーブルに挿入する場合があります。それが何をするかを知る簡単な方法は、「スクリプトの生成」ボタンをクリックして、実行を計画しているT-SQLを調べることです。
列の列幅を広げてもnvarchar
、テーブルをドロップする必要はありません。いずれのALTER TABLE
操作も行いません。テーブルまたは列のプロパティを変更する際の制限の詳細については、ALTER TABLEステートメントを参照してください。
以下のドキュメントから最も関連する部分をコピーしました。
列のサイズを変更する
ALTER COLUMN句で列データ型の新しいサイズを指定することにより、列の長さ、精度、またはスケールを変更できます。列にデータが存在する場合、新しいサイズをデータの最大サイズより小さくすることはできません。また、列がvarchar、nvarchar、またはvarbinaryデータ型であり、インデックスがPRIMARY KEY制約の結果でない限り、カラムをインデックスに定義することはできません。例Pを参照してください。
ロックとALTER TABLE
ALTER TABLEで指定された変更はすぐに実装されます。変更がテーブル内の行の変更を必要とする場合、ALTER TABLEは行を更新します。ALTER TABLEは、テーブルのスキーマ変更ロックを取得して、最後に非常に短いSCH-Mロックを必要とするオンラインインデックス操作を除き、変更中に他の接続がテーブルのメタデータを参照しないようにします。ALTER TABLE…SWITCH操作では、ロックはソーステーブルとターゲットテーブルの両方で取得されます。テーブルに加えられた変更はログに記録され、完全に回復可能です。列の削除やデフォルトのNOT NULL列の追加など、非常に大きなテーブルのすべての行に影響する変更は、完了して多くのログレコードを生成するのに時間がかかる場合があります。これらのALTER TABLEステートメントは、INSERT、UPDATE、