it-swarm.asia

Mengubah lebar kolom

Akankah menambah lebar kolom (nvarchar) akan menjatuhkan tabel?

Dengan kata lain, dapatkah lebar diubah di lingkungan produksi dengan pengguna aktif?

Saya pikir jika ukurannya meningkat (tidak seperti menurun) ini tidak akan menjadi masalah.

40
Fernando

Jika Anda melakukannya melalui pernyataan T-SQL seperti di bawah ini, maka tidak akan terjadi penurunan tabel dan Anda dapat melakukannya dengan aman di lingkungan produksi:

alter table <table> alter column <column> nvarchar(biggernumber) [not] null

Jika Anda melakukannya melalui GUI Tabel Desain SSMS, itu akan tergantung pada skrip apa yang diputuskan untuk digunakan untuk mengimplementasikan perubahan. Kadang-kadang itu akan memasukkan data ke tabel sementara, jatuhkan tabel asli, buat versi baru dari tabel itu, dan masukkan kembali ke yang baru. Cara mudah untuk mengetahui apa yang akan dilakukan adalah dengan mengklik tombol "Hasilkan Script" dan lihat T-SQL yang akan dieksekusi.

53
Derek Kromm

Menambah lebar kolom kolom nvarchar tidak akan membutuhkan penurunan tabel. Juga tidak ada ALTER TABLE operasi. Untuk detail tentang batasan saat mengubah properti tabel atau kolom, Anda dapat membaca di pernyataan ALTER TABLE .

Saya menyalin bagian yang paling relevan dari dokumentasi di bawah ini:

Mengubah Ukuran Kolom

Anda dapat mengubah panjang, presisi, atau skala kolom dengan menentukan ukuran baru untuk tipe data kolom dalam klausa ALTER COLUMN. Jika data ada di kolom, ukuran baru tidak boleh lebih kecil dari ukuran maksimum data. Juga, kolom tidak dapat didefinisikan dalam indeks, kecuali kolom adalah tipe data varchar, nvarchar, atau varbinary dan indeks bukan hasil dari kendala PRIMARY KEY. Lihat contoh P.

Kunci dan ALTER TABLE

Perubahan yang ditentukan dalam ALTER TABLE diimplementasikan segera. Jika perubahan memerlukan modifikasi dari baris dalam tabel, ALTER TABLE memperbarui baris. ALTER TABLE mendapatkan kunci skema modifikasi di atas meja untuk memastikan bahwa tidak ada koneksi lain referensi bahkan metadata untuk tabel selama perubahan, kecuali operasi indeks online yang membutuhkan kunci SCH-M sangat pendek di akhir. Dalam operasi ALTER TABLE… SWITCH, kunci diperoleh pada tabel sumber dan target. Modifikasi yang dilakukan pada tabel dicatat dan sepenuhnya dapat dipulihkan. Perubahan yang memengaruhi semua baris dalam tabel yang sangat besar, seperti menjatuhkan kolom atau menambahkan kolom NOT NULL dengan default, dapat memakan waktu lama untuk menyelesaikan dan menghasilkan banyak catatan log. Pernyataan ALTER TABLE ini harus dijalankan dengan kehati-hatian yang sama dengan pernyataan INSERT, UPDATE, atau DELETE yang memengaruhi banyak baris.

18
MicSim