SSMS'de, değişiklikleri kaydetmeye izin verilmiyor hata iletisi

Bu makale, SQL Server Management Studio'da (SSMS) bir tabloyu kaydetmeye çalıştığınızda hata iletisi almanıza neden olan sorunu geçici olarak çözmenize yardımcı olur.

Özgün ürün sürümü: SQL Server
Orijinal KB numarası: 956176

Belirtiler

SQL Server management Studio'da, Tasarımcı kullanarak tabloda değişiklik yaptıktan sonra tabloyu kaydetmeye çalıştığınızda aşağıdaki hata iletisini alabilirsiniz:

Değişikliklerin kaydedilmesine izin verilmiyor. Yaptığınız değişiklikler, aşağıdaki tabloların bırakılması ve yeniden oluşturulması gerektirir. Yeniden oluşturulamaz bir tabloda değişiklik yaptınız veya Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneğini etkinleştirdiniz.

Tabloda aşağıdaki değişikliklerden birini veya daha fazlasını yaptığınızda bu sorun oluşur:

  • Bir sütun için Null'lara İzin Ver ayarını değiştirirsiniz.
  • Tablodaki sütunları yeniden sıralarsanız.
  • Sütun veri türünü değiştirirseniz.
  • Yeni bir sütun eklerseniz.
  • Tablonun filegroup öğesini veya onun text/image verilerini değiştirirsiniz.

Neden

Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneği, SQL Server Management Studio'da varsayılan olarak etkinleştirildiğinden bu sorun oluşur.

Bir tabloyu, tablonun meta veri yapısını değiştirecek şekilde değiştirdiğinizde ve sonra da tabloyu kaydettiğinizde, tablonun bu değişikliklere göre yeniden oluşturulması gerekir. Bu, meta verilerin kaybolmasına ve tablonun yeniden oluşturulması sırasında doğrudan veri kaybına neden olabilir. SQL Server Management Studio (SSMS) Seçenekleri penceresinin Tasarımcı bölümünde Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneğini etkinleştirirseniz 'Belirtiler' bölümünde belirtilen hata iletisini alırsınız.

Geçici Çözüm

Bu sorunu geçici olarak çözmek için, tablonun meta veri yapısında değişiklik yapmak için ALTER TABLE Transact-SQL komutlarını kullanın.

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

alter table MyTable alter column MyDate7 datetime NULL

Önemli

Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle seçeneğini kapatarak bu soruna geçici bir çözüm bulamamanızı kesinlikle önermeyiz. Bu seçeneği kapatmanın riskleri hakkında daha fazla bilgi için 'Daha fazla bilgi' bölümüne bakın.

Daha fazla bilgi

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

  1. SQL Server Management Studio'yu açın.

  2. Araçlar menüsünde Seçenekler'e tıklayın.

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

  4. Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle onay kutusunu seçin veya temizleyin ve ardından Tamam'a tıklayı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ı oluşabilir.

"Tablonun yeniden oluşturulmasını gerektiren değişiklikleri kaydetmeyi engelle" seçeneğini kapatmanın riski

Bu seçeneği kapatmak bir tabloyu yeniden oluşturmaktan kaçınmanıza yardımcı olsa da, değişikliklerin kaybolmasına da neden olabilir. Örneğin, tablodaki değişiklikleri izlemek için SQL Server'da Değişiklik İzleme özelliğini etkinleştirdiğinizi varsayalım. Tablonun yeniden oluşturulmasına neden olan bir işlem gerçekleştirdiğinizde, Belirtiler bölümünde belirtilen hata iletisini alırsınız. Ancak bu seçeneği kapatırsanız tablo yeniden oluşturulduğunda mevcut değişiklik izleme bilgileri silinir. Bu nedenle, seçeneği kapatarak bu soruna geçici bir çözüm bulamamanızı öneririz.

Tablo için Değişiklik İzleme özelliğinin etkinleştirilip etkinleştirilmediğini belirlemek için şu adımları izleyin:

  1. SQL Server Management Studio'da, Nesne Gezgini'nde tabloyu bulun.
  2. Tabloya sağ tıklayın ve ardından Özellikler'e tıklayın.
  3. Tablo Özellikleri iletişim kutusunda, Değişiklik İzleme'ye tıklayın. Değişiklik İzleme öğesinin değeri True ise, tablo için bu seçenek etkinleştirilmiştir. Değer False ise bu seçenek devre dışı bırakılmıştır.

Change Tracking özelliği etkinleştirildiğinde, tablonun meta veri yapısını değiştirmek için Transact-SQL komutlarını kullanın.

Sorunu yeniden oluşturma adımları

  1. SQL Server Management Studio'da, Tablo Tasarımcısı aracında birincil anahtar içeren bir tablo oluşturun.
  2. Bu tabloyu içeren veritabanına sağ tıklayın ve ardından Özellikler'e tıklayın.
  3. Veritabanı Özellikleri iletişim kutusunda Değişiklik İzleme'ye tıklayın.
  4. Değişiklik İzleme öğesinin değerini True olarak ayarlayın ve Tamam'a tıklayın.
  5. Tabloya sağ tıklayın ve ardından Özellikler'e tıklayın.
  6. Tablo Özellikleri iletişim kutusunda Değişiklik İzleme'ye tıklayın.
  7. Değişiklik İzleme öğesinin değerini True olarak ayarlayın ve Tamam'a tıklayın.
  8. Araçlar menüsünde Seçenekler'e tıklayın.
  9. Seçenekler iletişim kutusunda Tasarımcılar'a tıklayın.
  10. Tablo yeniden oluşturulma gerektiren değişiklikleri kaydetmeyi engelle onay kutusuna tıklayarak seçin ve ardından Tamam'a tıklayın.
  11. Tablo Tasarımcısı aracında, var olan bir sütunda Null Değerlere İzin Ver ayarını değiştirin.
  12. Değişikliği tabloya kaydetmeyi deneyin.