İçerikleri sosyal medya üzerinden paylaşarak daha fazla kişiye ulaşmasına yardımcı olabilirsiniz.




Kategori: MS SQL Server
Fırat Boyan 11.07.2016 0

SQL Server 2014'te Saving changes is not permitted Hatası ve Çözümü

SQL Server 2014'te karşılaşılan Saving changes is not permitted hatası, özellikle veritabanı tasarımı sırasında yapılan kritik değişikliklerin doğrudan uygulanmasını engelleyen bir koruma mekanizmasıdır. Bu hata, tablolarda yapılan belirli türdeki değişikliklerin veritabanında potansiyel veri kayıplarına veya ciddi performans sorunlarına yol açabileceği düşünülerek varsayılan olarak etkin hale getirilmiştir. SQL Server'ın bu davranışı, veritabanı yöneticilerinin farkında olmadan geri alınamaz değişiklikler yapmasını önlemek için tasarlanmıştır. Ancak, bu koruma mekanizması veritabanı geliştiricileri ve yöneticileri için bazen sınırlayıcı olabilir, çünkü tablo yapısında yapılan bazı yaygın değişiklikler bile bu hataya neden olabilir.

Bu hata, özellikle SQL Server Management Studio (SSMS) aracılığıyla tablo üzerinde yapılan değişikliklerde ortaya çıkar. SSMS'de tablo yapısını düzenlerken, örneğin yeni bir sütun eklemek, sütun sırasını değiştirmek veya veri tipini değiştirmek gibi işlemler sırasında SQL Server, bu işlemlerin tabloyu yeniden oluşturmadan uygulanamayacağını tespit eder ve işlemi durdurur. Çünkü SQL Server, bazı tablo değişikliklerinde mevcut tabloyu tamamen yeniden oluşturmayı gerektiren bir işlem yürütür. Örneğin, sütun tipi değişikliklerinde veya sütun sıralamasını değiştirme gibi işlemler, mevcut tablo verilerinin korunarak yeni bir tablo yapısının oluşturulması anlamına gelir. Bu yeniden oluşturma süreci, büyük tablolar üzerinde ciddi performans etkilerine neden olabilir ve işlemin tamamlanma süresini uzatabilir.

SQL Server'da yapılan her tablo değişikliği, arka planda belirli bir dizi işlemle gerçekleştirilir. Örneğin, tabloya yeni bir sütun eklenmek istendiğinde, SQL Server bu sütunu tabloya doğrudan ekleyebilirse bu değişiklik hızlı bir şekilde gerçekleşir. Ancak, bazı değişiklikler tabloyu tamamen yeniden oluşturmadan uygulanamaz. Özellikle sütun sırası değişiklikleri veya veri tipindeki değişiklikler, mevcut tablonun yapısında köklü bir değişiklik gerektirdiği için tabloyu yeniden oluşturarak eski tabloyu siler ve yeni tabloya veri aktarır. Bu işlem, milyonlarca satıra sahip büyük tablolar için performans kayıplarına ve hatta veri kaybı riskine yol açabilir.

Bu hatanın ortaya çıkmasının temel nedeni, SSMS'de varsayılan olarak etkin olan Prevent saving changes that require table re-creation ayarıdır. Bu ayar, tabloyu yeniden oluşturmayı gerektiren değişikliklerin kaydedilmesini engelleyerek veritabanının güvenliğini ve bütünlüğünü korur. Ancak, bu ayarın devre dışı bırakılması, tablo değişikliklerinin doğrudan uygulanmasına izin verir ve büyük tablolar üzerinde potansiyel olarak yıkıcı sonuçlar doğurabilir. Örneğin, tablo üzerinde büyük miktarda veri varsa ve bu veri aktarımı sırasında bir hata oluşursa, veri kaybı veya bozulmalar yaşanabilir. Ayrıca, tabloyu yeniden oluşturma işlemi sırasında yoğun CPU ve Disk kaynağı tüketimi yaşanabilir, bu da veritabanı performansında ciddi bir düşüşe yol açabilir.

Bununla birlikte, bazı senaryolarda bu hatanın devre dışı bırakılması gerekebilir. Özellikle veritabanı yöneticileri ve geliştiriciler, tablolar üzerinde sıkça yapısal değişiklikler yaparken bu ayarı devre dışı bırakma ihtiyacı duyabilir. Ancak bu durumda dikkatli olunmalı ve yapılacak işlemlerin sonuçları önceden analiz edilmelidir. Örneğin, tablo yapısında büyük değişiklikler yapılmadan önce tablonun yedeği alınmalı ve yeniden oluşturma işleminin performans üzerindeki etkileri göz önünde bulundurulmalıdır.

Ayrıca, bu hatayı önlemek için T-SQL komutları kullanılarak manuel olarak tablo değişiklikleri yapılabilir. T-SQL komutlarıyla yapılan değişiklikler, SSMS’nin varsayılan ayarlarını devre dışı bırakmadan tabloya müdahale edilmesini sağlar. Bu yöntem, tablo üzerinde daha ince ayar yapılmasına olanak tanır ve doğrudan tabloyu yeniden oluşturma işlemini engelleyebilir. Örneğin, bir sütunun veri tipini değiştirmek veya sırasını ayarlamak için ALTER TABLE komutları kullanılabilir. Bu şekilde, daha kontrol edilebilir ve düşük riskli bir yöntemle tablo değişiklikleri yapılabilir.

SQL Server Management Studio (SSMS) üzerinde çalışırken, özellikle tablo yapıları üzerinde değişiklik yapmaya çalıştığınızda karşılaşabileceğiniz yaygın hatalardan birisi 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 to a table that can’t be re-created or enabled the option Prevent saving changes that require the tables to be re-created. hatasıdır.

Bu hata genellikle tabloya yapılan değişikliklerin, SQL Server'ın mevcut tabloyu yeniden oluşturmadan gerçekleştiremeyeceği türde değişiklikler olduğunu belirtir. SQL Server, tablolar üzerinde yapılan bazı değişikliklerin tabloyu tamamen yeniden oluşturmayı gerektireceğini algıladığında, varsayılan olarak bu işlemi durdurarak kullanıcıyı uyarır. Bu koruma mekanizması, büyük tablolar üzerinde yapılan değişikliklerde veritabanı performansının ciddi şekilde etkilenmesini veya veri kaybı riskini minimize etmek amacıyla tasarlanmıştır.

Bu tür bir hata ile karşılaştığınızda, tabloya eklemeye çalıştığınız yeni bir sütunun veri tipi, sırası veya sütun adı gibi faktörlerin tabloyu yeniden oluşturmadan uygulanamayacağını bilmek önemlidir. SQL Server, tabloyu yeniden oluşturarak bu tür değişiklikleri uygularken tabloya ait verilerin korunmasını sağlar, ancak bu işlem büyük tablolar üzerinde ciddi performans kayıplarına yol açabilir. Bu nedenle, SSMS’de varsayılan olarak etkin olan Prevent saving changes that require table re-creation seçeneği, bu tür işlemleri otomatik olarak engeller ve kullanıcıdan manuel onay almadan devam etmez.

Eğer bu hatanın çözümüne dair gerekli tüm işlemleri, hangi yöntemle bu engeli nasıl aşabileceğinizi adım adım açıklayacağım.

SQL Server 2014  Saving changes is not permitted Hatası ve Çözümü

SQL Server 2014  Saving changes is not permitted Hatası ve Çözümü

Öncelikle SQL Server Management Studio'da üstteki Menu Bar kısmındaki Tools menüsünü açtığınızda en altta Options... seçeneğine tıklıyoruz.

SQL Server 2014  Saving changes is not permitted Hatası ve Çözümü

Açılan Options penceresinde, sol tarafta sırasıyla Designers > Table and Database Designers bölümünü seçyiyoruz. Bunu seçtikten sonra sağ tarafta Table Options alanı içinde, en altta bulunan Prevent saving changes that require table re-creation seçeneğinin işaretini kaldırıyor ve sonra OK butonuna basıyoruz.

SQL Server 2014  Saving changes is not permitted Hatası ve Çözümü

SQL Server 2014  Saving changes is not permitted Hatası ve Çözümü

Yapılan bu değişikliğin ardından, önceden oluşturulmuş ve kaydedilmiş tablolarınız üzerindeki değişikliklerinizi hata almadan gerçekleştirebileceksiniz.

Faydalı olması dileğiyle...


Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.



Yazar Hakkında

firatboyan.com


1985 yılında Alanya'da doğdum. İlk, orta ve lise öğrenimimi Alanya'da tamamladım. Liseden mezun olduktan sonra Akdeniz Üniversitesi Bilgisayar Teknolojisi Ön Lisans programına yerleştim ve bu programdan mezun oldum. Ön Lisans programından mezun olduktan bir süre sonra Dikey Geçiş Sınavı (DGS) ile İstanbul Teknik Üniversitesi (İTÜ) Bilgisayar Mühendisliği Lisans programına yerleştim.

2003 yılından beri Bilgi Teknolojileri sektöründe Sistem ve Network alanlarında çalışıyorum. Bir çok firma bünyesinde onlarca farklı projelerde yer alarak bu alanda yıllar içinde ciddi bir bilgi birikimi ve deneyimler kazandım. Bilgi Teknolojileri sektöründeki profesyonel çalışma hayatımın uzunca bir dönemini entegratör firma bazında, ağılıklı olarak Microsoft ürünleri üzerine danışman olarak sürdürüyor ve yüksek seviyeli projeler geliştiriyorum. Uzunca bir süredir de Türkiye'nin önde gelen entegratör firmalarından olan Data Market bünyesinde Senior Cloud Engineer olarak çalışıyorum.

Ek olarak, 2015 yılında Network Akademi bünyesinde Microsoft Certified Trainer (MCT) ünvanı ile Sistem ve Network Uzmanlık eğitimleri vermeye başladım. Sistem ve Network Uzmanlığı alanındaki eğitmenlik serüvenime Network Akademi bünyesinde devam etmekteyim.

YORUMLAR
Bu makaleye henüz yorum yapılmadı! İlk yorum yapan sen ol.
Her türlü görüş ve önerilerinizi aşağıdaki yorum panelinden bırakabilir, kafanıza takılanları veya merak ettiklerinizi sorabilirsiniz.


750 karakter yazabilirsiniz.
Captcha
Güvenlik kodunu BÜYÜK harflerle giriniz.
* Yorumlar, onaylandıktan sonra yayınlanmaktadır.
* E-posta, yorum onay bildirimi için gereklidir. Yayınlanmaz.