Pembukaan
Saya memodifikasi kolom di SQL Server 2008 hari ini, mengubah tipe data dari sesuatu seperti mata uang (18,0) menjadi (19,2).
Saya mendapat kesalahan "Perubahan yang Anda buat membutuhkan tabel berikut untuk dihapus dan dibuat ulang" dari SQL Server.
Sebelum Anda mencoba menjawab, harap baca yang berikut:
Saya sudah tahu ada opsi di Alat ► Opsi ► Desainer ► Desainer Tabel dan Database ► Hapus centang pada kotak "Cegah perubahan simpanan yang memerlukan pembuatan ulang tabel." ... jadi jangan jawab dengan itu!
Pertanyaan aktual
Pertanyaan saya yang sebenarnya adalah untuk hal lain, sebagai berikut:
Apakah ada efek negatif / kemungkinan kelemahan melakukan ini?
Apakah tabel benar-benar jatuh dan diciptakan kembali secara otomatis ketika kotak ini tidak dicentang?
Jika demikian, apakah tabel menyalin replika persis 100% dari tabel sumber?
sumber
Jawaban:
Tabel hanya dijatuhkan dan dibuat kembali dalam kasus di mana itulah satu-satunya cara Studio Manajemen SQL Server telah diprogram untuk mengetahui bagaimana melakukannya.
Tentu saja ada kasus di mana ia akan melakukan itu ketika tidak perlu, tetapi juga akan ada kasus di mana Anda mengedit di Studio Manajemen tidak akan jatuh dan dibuat kembali karena tidak harus.
Masalahnya adalah bahwa menghitung semua kasus dan menentukan di sisi mana mereka jatuh akan sangat membosankan.
Inilah sebabnya mengapa saya suka menggunakan
ALTER TABLE
di jendela permintaan, daripada desainer visual yang menyembunyikan apa yang mereka lakukan (dan terus terang memiliki bug) - Saya tahu persis apa yang akan terjadi, dan saya dapat mempersiapkan kasus-kasus di mana satu-satunya kemungkinan adalah menjatuhkan dan membuat ulang tabel (yang jumlahnya kurang dari seberapa sering SSMS akan melakukannya untuk Anda).sumber
Alat -> Opsi -> simpul Desainer -> Hapus centang " Cegah perubahan simpanan yang memerlukan rekreasi tabel ".
sumber
Referensi - Menonaktifkan opsi ini dapat membantu Anda menghindari membuat kembali tabel, ini juga dapat menyebabkan perubahan hilang. Misalnya, anggap Anda mengaktifkan fitur Ubah Pelacakan di SQL Server 2008 untuk melacak perubahan pada tabel. Saat Anda melakukan operasi yang menyebabkan tabel dibuat kembali, Anda menerima pesan galat yang disebutkan di bagian "Gejala". Namun, jika Anda mematikan opsi ini, informasi pelacakan perubahan yang ada dihapus ketika tabel dibuat kembali. Oleh karena itu, Microsoft menganjurkan agar Anda tidak mengatasi masalah ini dengan mematikan opsi.
sumber
SQL Server menjatuhkan dan membuat ulang tabel hanya jika Anda:
Menggunakan ALTER lebih aman, karena jika metadata hilang saat Anda membuat kembali tabel, data Anda akan hilang.
sumber
IDENTITY
properti pada kolom, misalnya.Ya, ada efek negatif dari ini:
Jika Anda membuat skrip perubahan yang diblokir oleh bendera ini, Anda akan mendapatkan skrip di bawah ini (semua saya mengubah kolom ID dalam Kontak menjadi kolom IDENTITAS bilangan otomatis, tetapi tabel memiliki dependensi). Catat potensi kesalahan yang dapat terjadi saat berikut ini berjalan:
-
sumber