SQL Server ‘Saving changes is not permitted’ Hatası Çözümü

Microsoft SQL Server kullanılarak database imizde bulunan tablolarımız üzerinde yapısal değişikliklere gitmek istediğimizde karşımıza bazı durumlarda uyarı ekranı gelebilir ve yapmak istediğimiz değişikliklere izin verilmeyeceği bilgisi karşımıza çıkar. Bu gibi bir durumla karşılaştığımızda ne yapmamız gerektiğine hep beraber bakalım.

Öncelikle SQL Server Management Studio aracımızı açalım ve sol tarafta bulunan Object Explorer tabından AdventureWorks2012 database imize bakalım. dbo.DatabaseLog isimli tablomuz üzerinde sağ tıklayalım ve Design ı açalım.

Screenshot (23)

Karşımıza gelen Table Design ekranından dbo.DatabaseLog tablomuz üzerinde bir kaç yapısal değişiklik yapalım. Ben örnek olarak deneme isminde nchar(10) tipinde veri tutan bir kolon ekledim ve default olarak ‘aaa’ değerlerini tutmasını sağladım. Şimdi tabloda daha önce bulunan Object ismindeki kolonun Allow Nulls özelliğini aktiften pasife çevirelim. Değişiklikleri yaptıktan sonra ctrl + s ile veya üst tarafta bulunan kaydet tuşuna basarak değişiklikleri kaydetmeye çalışalım. Karşımıza yapılan değişiklikleri kayıt edemeyeceğimizi bildiren aşağıdaki gibi bir uyarı ekranı gelecektir.

Tablo Değikliği Uyarısı

Saving changes is not permitted. The changes you have made require the following tables to be dropped and re-created. You have either made changes toa table that can’t be re-created or enabled the option Prevent saving changes that require the table to be re-created.

Yapılan bu yapısal değişiklikler için var olan tablonun önce drop edilmesi ardından re-create edilmesi gerektiği şeklinde bir uyarı ile karşılaştık ve yapmak istediğimiz değişiklikler tabloya yansıtılamadı. Peki böyle bir durum ile karşılaşmamak için ne yapılması gerekiyor bakalım.

Öncelikle üst taraftaki Tools menüsü altında bulunan Options sekmesine tıklayalım.

Tools --> Options

Tools –> Options

Açılan Options penceresinde sol taraftaki tablardan Designers bölümüne tıklayalım. Sol tarafta bulunan checkbox lardan

  • Warn about difference detection
  • Warn about tables affected
  • Prevent saving changes that require table re-creation

seçenekleri seçili (aktif) bulunduğunu görebilirsiniz.

Prevent saving changes that require table re-creation

Prevent saving changes that require table re-creation

Bu seçili üç seçeneği kaldıralım (pasif) ve OK diyerek Options penceresini kapatalım.

tabloetkisecimyok

Bu değişikliği yaptıktan sonra az önce üzerinde değişiklik yapmaya çalıştığımız dbo.DatabaseLog tablosuna geri dönelim ve aynı değişiklikleri tekrar yapıp kaydetmeye çalışalım. Gördüğünüz üzere artık tablonun drop edilip tekrar re-create edilmesine gerek kalmadan yapılan değişikliklerin tabloya yansıtılması sağlanmış oldu.

Yazı hakkındaki görüş, öneri ve yorumlarınızı bana iletirseniz çok memnun olurum. Bir sonraki makalede görüşmek üzere…

Yazar: Abdullah ALTINTAŞ