SQL Server 'Değişiklikleri kaydetmeye izin verilmiyor' hatası ► Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önleyin


749

SQL Server'da bir tablo oluşturup kaydettiğimde, int'den real'e bir sütun türünü değiştirmek gibi tablo tasarımını düzenlemeye çalışırsam, bu hatayı alıyorum:

Değişikliklerin kaydedilmesine izin verilmiyor. Yaptığınız değişiklik için aşağıdaki tablonun bırakılması ve yeniden oluşturulması gerekiyor. Yeniden oluşturulamayan bir tabloda değişiklikler yaptınız veya tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetme seçeneğini etkinleştirdiniz.

Neden tabloyu yeniden oluşturmak zorundayım? Sadece bir veri türünü değiştirmek istediğiniz smallintiçin real.

Masa boş ve şimdiye kadar kullanmadım.


Yanıtlar:


1466

MSDN'deki Kaydet (İzin Verilmez) İletişim Kutusu'ndan :

Kaydet (İzin Verilmeyen) iletişim kutusu Yaptığınız değişiklikler sıralanan tablolar bıraktı ve yeniden oluşturulacak gerektirdiğinden değişiklikleri kaydetmeden izin verilmediğini de sizi uyarır.

Aşağıdaki işlemler için bir tablonun yeniden oluşturulması gerekebilir:

  • Tablonun ortasına yeni bir sütun ekleme
  • Bir sütunu bırakma
  • Sütun kuralsızlığını değiştirme
  • Sütunların sırasını değiştirme
  • Bir sütunun veri türünü değiştirme <<<<

Bu seçeneği değiştirmek için, Araçlar menüsünde Seçenekler'i tıklatın , Tasarımcılar'ı genişletin ve ardından Tablo ve Veritabanı Tasarımcıları'nı tıklatın . Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle onay kutusunu seçin veya temizleyin .

Ayrıca bkz. Colt Kwong Blog Girişi:
SQL 2008 Management Studio'da değişikliklerin kaydedilmesine izin verilmiyor


7
SSMS önce sizi uyarmadan güvenli olmayan bir şey yapmanıza izin vermemelidir. Ancak her ihtimale karşı elinizde bir yedek bulundurun.
Robert Harvey

40
Bu seçenek SSMS'ye devam edip yeni şemada bir Temp Tablosu oluşturabileceğini, verileri bu tabloya kopyalayabildiğini, ardından eski tabloyu silip Temp Tablosunu orijinal adıyla yeniden adlandırabileceğini söyler. İşlemde olması gereken tüm para cezası, ancak ilişkiler kırılacak ve yeniden oluşturulacak, böylece% 100 değilse, beklenmedik bir şey yapabilir.
Justin King

13
Neden bu seçeneği bırakmak için bu basit adımları hatırlayamıyorum ve her zaman çözüm aramak zorunda bilmiyorum. Hehehehehe. Teşekkürler dostum!
Geliştirici

8
Kutsal inek - sadece bu hatayı aşmak için bunu kapatabilirsiniz ?? Bunu bilmiyordum ve son 3 yıldır yanlışlıkla Kimlik Belirtimi olmayan bir tablo tasarlama ve yeni bir tablo yaratma korkusu yaşadım. Harika bir ipucu!
nocarrier

4
İşte Microsoft'un 'Değişiklikleri kaydetmeyi engelle ...' seçeneğini devre dışı bırakma konusunda CAVEAT: support.microsoft.com/en-us/kb/956176 . Temel olarak, kullandığınız bir özellikse Değişikliği İzleme gibi meta verileri kaybedebilirsiniz.
Baodad

205

SSMS kullanıyor musunuz?

Evetse, Araçlar >> Seçenekler >> Tasarımcılar menüsüne gidin ve “Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle” seçeneğinin işaretini kaldırın.


Araçlar >> Seçenekler vb .. "Menü" değil (sadece eski sürümlerde aynı olduğuna inanıyorum ssms 2014 açısından)
Tom Stickel

@TomStickel Sanırım menüye gitmek istedim: "Araçlar"
ypercubeᵀᴹ

: P Evet anladım, sadece "sıkışmış" olacak herkes için yorum olacağını düşündüm, korkutucu biliyorum ama bazı insanlar hızla ellerini yukarı atmak olabilir ... thx
Tom Stickel

2
@NeilMeyer, onay kutusunun bir nedenden dolayı işaretli olduğuna dikkat edin. Bir tabloyu düşürecek ve yeniden oluşturacak işlemleri önlemek için bir güvenlik önlemidir (ve böylece tüm verilerini kaybeder ! Bu yüzden dikkatli kullanın!
ypercubeᵀᴹ

tablolar bu şekilde yeniden oluşturulursa tablolar arasındaki ilişkiler kaybolacak mı?
Neil Meyer

78

Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önleme

Beş hızlı tıklama

Beş tıklamayla tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önleyin

  1. Araçlar
  2. Seçenekler
  3. tasarımcılar
  4. Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önleme
  5. Tamam .

Kaydettikten sonra kutuyu tekrar işaretlemek için işlemi tekrarlayın. Bu, kazara veri kaybına karşı koruma sağlar.

Daha fazla açıklama

  • Varsayılan olarak SQL Server Management Studio tablo bırakılmasını önler, çünkü bir tablo bırakıldığında veri içeriği kaybolur. *

  • Tasarım görünümünde bir sütunun veri türünü değiştirirken, değişiklikleri kaydederken veritabanı tabloyu dahili olarak bırakır ve yeni bir tablo oluşturur.

* Tablonuz boş olduğu için özel koşullarınız sonuç vermeyecektir. Bu açıklamayı tamamen prosedür hakkındaki anlayışınızı geliştirmek için sağlıyorum.


27

Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneğini değiştirmek için şu adımları izleyin:

SQL Server Management Studio'yu (SSMS) açın. Araçlar menüsünde Seçenekler'i tıklatın.

Seçenekler penceresinin gezinti bölmesinde Tasarımcılar'ı tıklatın.

Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle onay kutusunu seçin veya seçimini kaldırın ve Tamam'ı tıklatın.

Not : Bu seçeneği devre dışı bırakırsanız, tabloyu kaydettiğinizde yaptığınız değişikliklerin tablonun meta veri yapısını değiştirdiği konusunda uyarılmazsınız. Bu durumda, tabloyu kaydettiğinizde veri kaybı meydana gelebilir.

resim açıklamasını buraya girin


Masa tasarımcısı kullanışlı, ancak onunla her şeyi başaramazsınız
Sitecore Sam

22

Bu adımları izleyerek 5 saniye içinde düzeltilebilen çok kolay ve basit ayar problemidir

Tabloyu değiştirdikten sonra değişiklikleri kaydetmenize izin vermek için, lütfen sql ayarınız için şu adımları izleyin:

  1. Microsoft SQL Server Management Studio 2008'i açın
  2. Araçlar menü seçenekleri'ni ve ardından Seçenekler'i tıklayın.
  3. Tasarımcı Seçiniz
  4. "Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle" seçeneğinin işaretini kaldırın
  5. Tamam'ı tıklayın
  6. Masanızı değiştirmeye çalışın
  7. Yaptığınız değişiklikler istenildiği gibi yapılacak

8
bu kabul edilen cevaba nasıl eklenir?
Ölümsüz Mavi

17

Üst menüde bulunan Alete gidin .
Açılır menüden seçenekler seçin. Artık bir menünüz var , menülerin sol bloğunda bulunan Tasarımcılar seçeneğini belirleyin. Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneğinin işaretini kaldırın . OK düğmesine tıklayın.


12

İşaretiniPrevent saving changes that require table re-creation gelen kutusu Araçlar ► Seçenekler ► Tasarımcılar sekmesine.

SQL Server 2012 örneği:

resim açıklamasını buraya girin


12

Bu, Microsoft SQL Server'da kolayca değiştirilebilir .

  1. Microsoft SQL Server Management Studio 2008'i açın
  2. Araçlar menüsünü tıklayın
  3. Seçenekler'i tıklayın
  4. Tasarımcı Seçiniz
  5. "Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle" seçeneğinin işaretini kaldırın
  6. Tamam'ı tıklayın

resim açıklamasını buraya girin


7

Bu bağlantıdan kopyalandı "... Önemli Tablo yeniden oluşturma gerektiren değişiklikleri kaydetmeyi engelle seçeneğini kapatarak bu soruna geçici bir çözüm bulmamanızı önemle öneririz. Bu seçeneği kapatma riskleri hakkında daha fazla bilgi için, bkz. Daha fazla bilgi "bölümü. ''

"... Bu soruna geçici bir çözüm bulmak için <a0> </a0>, bir tablonun meta veri yapısında değişiklik yapmak için Transact-SQL deyimlerini kullanın. Ek bilgi için SQL Server Books Online'da aşağıdaki konuya bakın

Örneğin, NT değerlerini kabul etmek için MyTable adlı tabloda datetime türündeki MyDate sütununu değiştirmek için şunları kullanabilirsiniz:

tablo değiştir MyTable değiştirme sütunu MyDate7 datetime NULL "


2
Hepsi aynı şeyi söyleyen birçok cevapla, masamda canlı verilerim olduğu için aradığım cevap buydu. 0 ondalık basamaktan 2 ondalık basamağa bir ondalık sütun güncellemek gerekiyordu ve basit alter deyimi mükemmel çalıştı!
stitz

Buradaki trajedi,
SSMS'nin

6

Ve buradaki birinin de dikkat etmemesi durumunda (benim gibi):

Microsoft SQL Server 2012 için, seçenekler iletişim kutusunda, görünüşe göre diğer tüm ayarları gizleyen sinsi küçük bir onay kutusu vardır. Her ne kadar bu kadar küçük canavarı kaçırdığımı söylememize rağmen !!!

Bundan sonra, adımlarla devam edebilirsiniz, tasarımcı, falan filan filandan tasarruf etmeyi önlemek için işareti kaldırın ...

sneaky_check_box_in_option


5

Araçlar >> Seçenekler >> Tasarımcılar ve “Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle” seçeneğinin işaretini kaldırın:

Fotoğraf formatında açıklama


2

1) Üstteki aleti açın.
2) Seçim Listesinden seçenekleri belirleyin.
3) Şimdi açılır pencerede geliyor ve artık sol taraftaki menüler listesinden tasarımcılar seçeneğini belirleyebilirsiniz.
4) Şimdi, değişikliklerin önlenmesi için tablonun yeniden oluşturulmasını gerektiren değişikliklerin işaretinin kaldırılması gerekir. Şimdi Tamam'ı tıklayın.


1

Araçlar menüsünden Seçenekler'i tıklayın, yan menüden Tasarımcılar'ı seçin ve tablonun yeniden oluşturulmasına yol açabilecek değişiklikleri engelle seçeneğinin işaretini kaldırın. Ardından değişiklikleri kaydedin


0

Listede "Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle" seçeneğini göremiyorsanız Resim

Değişiklik izlemeyi etkinleştirmeniz gerekir.

  • Veritabanınıza sağ tıklayın ve Özellikler'e tıklayın
  • İzlemeyi değiştir'i tıklayın ve etkinleştirin
  • Araçlar -> Seçenekler -> Tasarımcı'ya tekrar gidin ve işaretini kaldırın.

0

Sql server Management studio kullanıyorsanız Araçlar >> Seçenekler >> Tasarımcılar bölümüne gidin ve “Tablo yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi önle” seçeneğinin işaretini kaldırın Benimle çalışır

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.