Ubah panjang varchar di tabel prod live

25

Saya memiliki server MS SQL Server 2008 R2 DB yang saat ini digunakan dengan aplikasi produksi.

Peningkatan baru ke aplikasi sekarang membutuhkan varchar(100)kolom dalam tabel yang akan ditingkatkan panjangnya.

Bisakah panjang kolom yang ada ini di prod DB ditingkatkan tanpa mempengaruhi data saat ini?

Apakah perubahan ini harus diselesaikan pada waktu di luar jam kerja untuk menghindari gangguan layanan?

anataliocs
sumber

Jawaban:

42

Jika Anda meningkatkan ke varchar(100 - 8000)(yaitu selain dari varchar(max)) dan Anda melakukan ini melalui TSQL daripada GUI SSMS

ALTER TABLE YourTable ALTER COLUMN YourCol varchar(200) [NOT] NULL

dan tidak mengubah nullability kolom dari NULLke NOT NULL(yang akan mengunci tabel sementara semua baris divalidasi dan berpotensi ditulis ke ) atau dari NOT NULLke NULL dalam beberapa keadaan maka ini adalah perubahan metadata cepat saja. Mungkin perlu menunggu SCH-Mkunci di atas meja, tetapi begitu memperoleh bahwa perubahan akan cukup instan.

Satu peringatan yang harus diperhatikan adalah bahwa selama menunggu SCH-Mkunci pertanyaan lain akan diblokir daripada melompat antrian di depannya sehingga Anda mungkin ingin mempertimbangkan untuk menambahkan yang SET LOCK_TIMEOUTpertama.

Juga pastikan dalam ALTER TABLEpernyataan yang Anda tentukan secara eksplisit NOT NULLjika itu adalah keadaan kolom asli karena jika tidak kolom akan diubah untuk memungkinkan NULL.

Martin Smith
sumber
Terima kasih atas jawaban cepatnya, baru saja mengecek. Itu hampir instan.
anataliocs