Saya mengalami masalah ini untuk pekerjaan saya juga. Dan solusi saya adalah #2.
Berikut langkah-langkah saya (saya menggunakan SQL Server 2005):
1) Tambahkan kolom ke tabel dengan nilai default:
ALTER TABLE MyTable ADD MyColumn varchar(40) DEFAULT('')
2) Tambahkan NOT NULL
kendala dengan NOCHECK
pilihan. NOCHECK
tidak berlaku pada nilai yang ada:
ALTER TABLE MyTable WITH NOCHECK
ADD CONSTRAINT MyColumn_NOTNULL CHECK (MyColumn IS NOT NULL)
3) Perbarui nilai secara bertahap dalam tabel:
GO
UPDATE TOP(3000) MyTable SET MyColumn = '' WHERE MyColumn IS NULL
GO 1000
-
Pernyataan pembaruan hanya akan memperbarui maksimum 3000 catatan. Hal ini memungkinkan untuk menyimpan sepotong data pada saat itu. Saya harus menggunakan "MyColumn IS NULL" karena tabel saya tidak memiliki urutan primary key.
-
GO 1000
akan mengeksekusi pernyataan sebelumnya 1000 kali. Ini akan memperbarui 3 juta catatan, jika Anda membutuhkan lebih banyak, tambahkan saja jumlah ini. Ini akan terus dijalankan hingga SQL Server mengembalikan 0 catatan untuk pernyataan UPDATE.