it-swarm.asia

Ubah panjang varchar di tabel prod live

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

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

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

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

26
anataliocs

Jika Anda meningkatkannya menjadi varchar(100 - 8000) (mis. Apa pun selain varchar(max)) dan Anda melakukan ini melalui TSQL daripada SSUI GUI

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

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

Satu peringatan yang harus diperhatikan adalah bahwa selama menunggu SCH-M mengunci kueri lain akan diblokir daripada melompat antrian di depannya sehingga Anda mungkin ingin mempertimbangkan untuk menambahkan SET LOCK_TIMEOUT pertama.

Pastikan juga dalam ALTER TABLE pernyataan yang Anda tentukan secara eksplisit NOT NULL jika itu adalah keadaan kolom asli seperti sebaliknya kolom akan diubah untuk mengizinkan NULL.

44
Martin Smith