SQL Server'a bir tablo kaydetmeye çalıştığınızda çıkan hata iletisi: "Değişiklikleri kaydetmeye izin verilmez"

Şunlar için geçerlidir: SQL Server 2008 ExpressSQL Server 2008 Express with Advanced ServicesSQL Server 2008 Standard Daha fazla

Belirtiler


Bir tabloyu değiştirmek için veri tanımlama dili (DDL) kullanın ve sonra Microsoft SQL Server 2008'de tablo kaydetmeyi deneyin, aşağıdaki iletiyi alabilirsiniz:

Değişiklikleri kaydetmeden izin verilmez. Yaptığınız değişiklikler, aşağıdaki tabloların kaldırılmasını ve yeniden oluşturulmasını gerektirir. Ya tablo üzerinde tablonun yeniden oluşturulamayacağı şekilde değişiklikler yaptınız ya da tablonun yeniden oluşturulmasını gerektirecek değişiklikleri önle seçeneğini etkinleştirdiniz.

Neden


Tablo yeniden oluşturma gerektiren değişiklikleri kaydetmeden engelle seçeneğini etkinleştirdiğinizde ve tabloya bir veya daha aşağıdaki değişiklikleri yapın, bu sorun oluşur:
  • Bir sütun için Boşlara İzin ver ayarını değiştirin.
  • Tabloda sütunların yerlerini değiştirin.
  • Sütun veri türünü değiştirin.
  • Yeni bir sütun ekleyin.
Tablo meta veri yapısını değiştirebilir ve sonra da tabloyu kaydedin, bir tabloyu değiştirdiğinizde, tablo bu değişikliklere dayalı yeniden oluşturulmaları gerekir. Tabloyu yeniden oluşturma sırasında bu meta veri kaybına ve doğrudan veri kaybına neden olabilir. SQL Server Management Studio (SSMS) seçenekler penceresi Tasarımcısı bölümünde Tablo yeniden oluşturma gerektiren değişiklikleri kaydetmeden engelle seçeneğini etkinleştirirseniz, "Belirtiler" bölümünde açıklanan hata iletisini alırsınız.

Geçici çözüm


Bu soruna geçici bir çözüm için 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:

http://msdn.microsoft.com/en-us/library/ms190273.aspx

Örneğin, MyDate sütun türü DateTime içinde tablo olarak değiştirmek için kullanabileceğiniz NULL değerleri kabul etmek için MyTable adlı:

alter table MyTable alter column MyDate7 datetime NULL

Önemli Bu soruna geçici bir çözüm yeniden oluşturma tablo gerektiren değişiklikleri kaydetmeden engelle seçeneğini kapatarak değil, öneririz. Bu seçeneği kapatma riskleri hakkında daha fazla bilgi için "Daha fazla bilgi" bölümüne bakın.

Durum


Microsoft bunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bir hata olduğunu onaylamıştır.

Daha fazla bilgi


Tablo yeniden oluşturma gerektiren değişiklikleri kaydetmeden engelle seçeneği değiştirmek için şu adımları izleyin:
  1. SQL Server Management Studio (SSMS) açın.
  2. Araçlar menüsünde Seçenekler'e tıklayın.
  3. Seçenekler penceresi Gezinti bölmesinde tasarımcıları' nı tıklatın.
  4. Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle onay kutusunu seçin veya temizleyin ve Tamam'a tıklayın.
Not: Bu seçeneği devre dışı bırakırsanız, tabloyu kaydederken uyarılırsınız değil yaptığınız değişiklikleri tablo meta veri yapısını değiştirmiş. Bu durumda, tabloyu kaydettiğinizde, veri kaybı oluşabilir.

"Yeniden tablo oluşturma gerektiren değişiklikleri kaydetmeden engelle" seçeneğinin devre dışı bırakılması riski

Bu seçeneği kapatma, bir tablonun yeniden oluşturmaktan kaçının yardımcı olmakla birlikte, aynı zamanda yapılan değişiklikler kaybolabilir yol açabilir. Örneğin, tablo için değişiklikleri izlemek için SQL Server 2008'de değişiklik izleme özelliğini etkinleştirmek varsayalım. Neden tablo yeniden oluşturulması bir işlem gerçekleştirdiğinizde, "Belirtiler" bölümünde açıklanan hata iletisini alırsınız. Bu seçeneği devre dışı bırakırsanız, tabloyu yeniden oluşturulur, ancak varolan değişikliği izleme bilgileri silinir. Bu nedenle, bu soruna geçici bir çözüm seçeneğini kapatarak değil, öneririz.

Bir tablo için değişiklik izleme özelliğinin etkin olup olmadığını belirlemek için şu adımları izleyin:
  1. SQL Server Management Studio'da Object Explorer' ın tablosunu bulun.
  2. Tabloyu sağ tıklatın ve sonra Özellikler' i tıklatın.
  3. Tablo Özellikleri iletişim kutusunda, Değişiklik izleme' yi tıklatın.
Değişiklik izleme öğesinin değeri Trueise, bu seçeneği tablo için etkinleştirilir. Değer Falseise, bu seçeneği devre dışı bırakılır.

Değiştirme izleme özelliği etkin olduğunda, Transact-SQL deyimlerini tablo meta veri yapısını değiştirmek için kullanın.

Sorunu yeniden oluşturma adımları

  1. SQL Server Management Studio'da Table Designer aracında bir birincil anahtar içeren bir tablo oluşturun.
  2. Bu tablo içeren bir veritabanını sağ tıklatın ve sonra Özellikler' i tıklatın.
  3. Veritabanı özellikleri iletişim kutusunda, Değişiklik izleme' yi tıklatın.
  4. Değişiklik izleme öğesinin değeri Trueolarak ayarlayın ve Tamam' ı tıklatın.
  5. Tabloyu sağ tıklatın ve sonra Özellikler' i tıklatın.
  6. Tablo Özellikleri iletişim kutusunda, Değişiklik izleme' yi tıklatın.
  7. Değişiklik izleme öğesinin değeri Trueolarak ayarlayın ve Tamam' ı tıklatın.
  8. Araçlar menüsünde Seçenekler'e tıklayın.
  9. Tasarımcılar Seçenekler iletişim kutusunda'ı tıklatın.
  10. Yeniden oluşturma tablo gerektiren değişiklikleri kaydetmeden engelle onay kutusunu tıklatıp seçin ve sonra tıklatın Tamam.
  11. Tablo Tasarımcısı Aracı'nda varolan bir sütun Boşlara İzin ver ayarını değiştirin.
  12. Tabloda değişiklik kaydetmeye çalışın.