Kesalahan Sql Server 'Menyimpan perubahan tidak diizinkan' ► Mencegah penyimpanan perubahan yang memerlukan pembuatan ulang tabel

749

Ketika saya membuat tabel di SQL Server dan menyimpannya, jika saya mencoba mengedit desain tabel, seperti mengubah tipe kolom dari int ke real, saya mendapatkan kesalahan ini:

Menyimpan perubahan tidak diizinkan. Perubahan yang Anda buat mengharuskan tabel berikut untuk dijatuhkan dan dibuat kembali. Anda telah membuat perubahan pada tabel yang tidak dapat dibuat kembali atau mengaktifkan opsi ini untuk mencegah perubahan penyimpanan yang mengharuskan tabel dibuat kembali.

Mengapa saya harus membuat ulang tabel? Saya hanya ingin mengubah tipe data dari smallintmenjadi real.

Meja itu kosong, dan saya tidak menggunakannya sampai sekarang.

Arash
sumber

Jawaban:

1466

Dari Kotak Dialog Simpan (Tidak Diizinkan) di MSDN :

The Simpan (tidak diizinkan) kotak dialog memperingatkan Anda bahwa menyimpan perubahan tidak diizinkan karena perubahan yang Anda buat membutuhkan tabel yang terdaftar akan turun dan kembali tercipta.

Tindakan berikut mungkin memerlukan tabel untuk dibuat kembali:

  • Menambahkan kolom baru ke tengah tabel
  • Menjatuhkan kolom
  • Mengubah nullabilitas kolom
  • Mengubah urutan kolom
  • Mengubah tipe data kolom <<<<

Untuk mengubah opsi ini, pada menu Alat , klik Opsi , perluas Desainer , lalu klik Desainer Tabel dan Database . Pilih atau kosongkan kotak centang Cegah perubahan yang mengharuskan tabel dibuat ulang .

Lihat Juga Colt Kwong, Entri Blog:
Menyimpan perubahan tidak diizinkan di SQL 2008 Management Studio

Robert Harvey
sumber
7
SSMS seharusnya tidak membiarkan Anda melakukan sesuatu yang tidak aman tanpa memperingatkan Anda terlebih dahulu. Tetapi memiliki cadangan di tangan, untuk berjaga-jaga.
Robert Harvey
40
Opsi ini memberi tahu SSMS bahwa ia dapat melanjutkan dan membuat Tabel Temp dalam skema baru, menyalin data ke dalam ini, lalu menghapus tabel lama dan mengganti nama Tabel Temp kembali ke nama aslinya. Semua baik-baik saja untuk dilakukan sebagaimana seharusnya dalam transaksi, namun hubungan akan rusak dan diciptakan kembali sehingga jika tidak 100% maka bisa melakukan sesuatu yang tidak terduga.
Justin King
13
Tidak tahu mengapa saya tidak dapat mengingat langkah-langkah sederhana untuk drop down opsi ini dan saya selalu mencari solusinya. Hehehehehe. Terima kasih sobat!
Pengembang
8
Astaga - Anda bisa mematikan ini untuk mengatasi kesalahan ini ?? Saya tidak tahu ini, dan selama 3 tahun terakhir hidup dalam ketakutan secara tidak sengaja mendesain tabel tanpa Spesifikasi Identitas dan harus membuat tabel baru. Tip yang bagus!
nocarrier
4
Berikut ini adalah CAVEAT Microsoft untuk menonaktifkan opsi 'Cegah perubahan ...': support.microsoft.com/en-us/kb/956176 . Pada dasarnya, Anda bisa kehilangan metadata seperti Ubah Pelacakan, jika itu fitur yang Anda gunakan.
Baodad
205

Apakah Anda menggunakan SSMS?

Jika ya, kebagian menu Alat >> Opsi >> Desainer dan hapus centang “Mencegah Menyimpan perubahan yang memerlukan pembuatan ulang tabel”

ypercubeᵀᴹ
sumber
Alat >> Opsi dll. Bukan "Menu" (hanya dari sudut pandang ssms 2014 yang saya yakini sama dalam versi yang lebih lama)
Tom Stickel
@ Tomstickel Kurasa maksudku pergi ke menu: "Tools"
ypercubeᵀᴹ
: P Ya saya pikir itu, baru saja saya pikir saya akan berkomentar untuk siapa saja yang benar-benar akan "macet", menakutkan saya tahu tetapi saya kira beberapa orang dapat dengan cepat mengangkat tangan mereka ... thx
Tom Stickel
2
@NeilMeyer berhati-hatilah bahwa kotak centang dicentang di sana karena suatu alasan. Ini adalah ukuran keamanan untuk mencegah operasi yang akan menjatuhkan dan membuat ulang tabel (dan dengan demikian kehilangan semua datanya ! Jadi, gunakan dengan hati-hati!
ypercubeᵀᴹ
Apakah hubungan antara tabel akan hilang jika tabel dibuat kembali seperti ini?
Neil Meyer
78

Cegah perubahan simpanan yang membutuhkan pembuatan ulang tabel

Lima klik cepat

Cegah perubahan simpanan yang membutuhkan pembuatan ulang tabel dalam lima klik

  1. Alat
  2. Pilihan
  3. Desainer
  4. Cegah perubahan simpanan yang membutuhkan pembuatan ulang tabel
  5. OK .

Setelah menyimpan, ulangi prosedur untuk menandai ulang kotak. Penjaga keamanan ini terhadap kehilangan data yang tidak disengaja.

Penjelasan lebih lanjut

  • Secara default SQL Server Management Studio mencegah menjatuhkan tabel, karena ketika sebuah tabel dijatuhkan, isi datanya hilang. *

  • Saat mengubah tipe data kolom dalam tampilan Desain tabel, saat menyimpan perubahan, basis data akan menjatuhkan tabel secara internal dan kemudian membuat kembali yang baru.

* Keadaan spesifik Anda tidak akan menimbulkan konsekuensi karena meja Anda kosong. Saya memberikan penjelasan ini sepenuhnya untuk meningkatkan pemahaman Anda tentang prosedur ini.

WonderWorker
sumber
27

Untuk mengubah Mencegah perubahan yang memerlukan opsi pembuatan ulang tabel, ikuti langkah-langkah ini:

Buka SQL Server Management Studio (SSMS). Pada menu Alat, klik Opsi.

Di panel navigasi dari jendela Opsi, klik Desainer.

Pilih atau kosongkan kotak centang Cegah perubahan yang membutuhkan pembuatan ulang tabel, lalu klik OK.

Catatan : Jika Anda menonaktifkan opsi ini, Anda tidak diperingatkan ketika Anda menyimpan tabel bahwa perubahan yang Anda buat telah mengubah struktur metadata tabel. Dalam hal ini, kehilangan data dapat terjadi saat Anda menyimpan tabel.

masukkan deskripsi gambar di sini

Tabish Usman
sumber
Desainer meja berguna, tetapi Anda tidak dapat mencapai semuanya dengan itu
Sitecore Sam
22

Ini adalah masalah pengaturan yang sangat mudah dan sederhana yang dapat diperbaiki dalam 5 detik dengan mengikuti langkah-langkah ini

Untuk memungkinkan Anda menyimpan perubahan setelah mengubah tabel, Harap ikuti langkah-langkah ini untuk pengaturan sql Anda:

  1. Buka Microsoft SQL Server Management Studio 2008
  2. Klik opsi menu Alat, lalu klik Opsi
  3. Pilih Desainer
  4. Hapus centang "cegah penyimpanan perubahan yang memerlukan opsi pembuatan ulang tabel"
  5. Klik OK
  6. Cobalah untuk mengubah meja Anda
  7. Perubahan Anda akan dilakukan sesuai keinginan
Rizwan Gill
sumber
8
bagaimana cara ini menambah jawaban yang diterima dengan cara apa pun?
Immortal Blue
17

Buka Alat yang terletak di menu atas.
Pilih opsi dari dropdown. Anda memiliki sembulan sekarang pilih opsi Desainer yang terletak di sebelah kiri blok menu. Hapus centang pada opsi Cegah perubahan simpanan yang membutuhkan pembuatan ulang tabel . Klik pada Tombol OK.

FIFO BIZSOL
sumber
12

Hapus centang pada Prevent saving changes that require table re-creationkotak dari Alat ► Opsi ► tab Desainer .

Contoh SQL Server 2012:

masukkan deskripsi gambar di sini

pedram
sumber
12

Ini dapat diubah dengan mudah di Microsoft SQL Server .

  1. Buka Microsoft SQL Server Management Studio 2008
  2. Klik menu Alat
  3. Klik Opsi
  4. Pilih Desainer
  5. Hilangkan centang
  6. Klik OK

masukkan deskripsi gambar di sini

Irshad Ahmed Akhonzada
sumber
7

Disalin dari tautan ini "... Penting Kami sangat menyarankan agar Anda tidak mengatasi masalah ini dengan mematikan opsi Cegah perubahan yang memerlukan opsi pembuatan ulang tabel. Untuk informasi lebih lanjut tentang risiko mematikan opsi ini, lihat" "Informasi lebih lanjut."

"... Untuk mengatasi masalah ini, gunakan pernyataan Transact-SQL untuk membuat perubahan pada struktur metadata tabel. Untuk informasi tambahan lihat topik berikut di SQL Server Books Online

Misalnya, untuk mengubah kolom MyDate dari tipe datetime di pada tabel bernama MyTable untuk menerima nilai NULL Anda dapat menggunakan:

ubah tabel MyTable ubah kolom MyDate7 datetime NULL "

Panagiotis
sumber
2
Dengan begitu banyak jawaban yang mengatakan hal yang sama, ini adalah jawaban yang saya cari karena saya memiliki data langsung di meja saya dan saya tidak ingin kehilangan. Saya perlu memperbarui kolom desimal dari 0 tempat desimal ke 2 tempat desimal dan pernyataan perubahan sederhana bekerja dengan sempurna!
stitz
Tragedi di sini adalah bahwa SSMS harus melakukan hal ini tepat di bawah tenda dan dengan demikian tidak perlu menjatuhkan meja
m12lrpv
6

Dan kalau-kalau seseorang di sini juga tidak memperhatikan (seperti saya):

Untuk Microsoft SQL Server 2012, di kotak dialog opsi, ada kotak centang kecil yang licik yang SANGAT menyembunyikan semua pengaturan lainnya. Meskipun aku harus mengatakan bahwa aku telah merindukan monster kecil itu selama ini !!!

Setelah itu, Anda dapat melanjutkan dengan langkah-langkah, perancang, hapus centang cegah penyelamatan bla bla bla ...

sneaky_check_box_in_option

Gellie Ann
sumber
5

Alat >> Opsi >> Desainer dan hapus centang "Mencegah Menyimpan perubahan yang memerlukan pembuatan ulang tabel":

Deskripsi dalam format Foto

سیدرسول میرعظیمی
sumber
2

1) Buka alat yang ada di atas.
2) Pilih opsi dari Daftar Pilih.
3) Sekarang Hadir popup dan sekarang Anda dapat memilih opsi desainer dari daftar menu di sisi kiri.
4) Sekarang cegah penyimpanan perubahan perlu dicentang yang diperlukan pembuatan ulang tabel. Sekarang Klik OK.

Rishabh Seth
sumber
1

Dari menu Alat, klik Opsi, pilih Desainer dari menu samping dan hapus centang untuk mencegah perubahan yang dapat menyebabkan rekreasi tabel. Kemudian simpan perubahan

Ogbonna Vitalis
sumber
0

Jika Anda tidak dapat melihat "Cegah penyimpanan perubahan yang diperlukan pembuatan ulang tabel" dalam daftar seperti itu Gambar

Anda harus mengaktifkan pelacakan perubahan.

  • Klik kanan pada database Anda dan klik Properties
  • Klik ubah pelacakan dan aktifkan
  • Buka Alat -> Opsi -> Perancang lagi dan hapus centang.
Emre Karataşoğlu
sumber
0

Jika Anda menggunakan sql server Management studio, buka Tools >> Options >> Designer dan hapus centang "Cegah Penghematan perubahan yang memerlukan pembuatan ulang tabel" Ini berfungsi dengan saya

Taher Chtaywi
sumber