İçeriğe atla
Şimdi yükleniyor
AKAşkın KILIÇ
  • Anasayfa
  • Azure & Bulut
    • Microsoft Azure
    • Bulut Altyapı
    • Microsoft 365
  • Yazılım
    • DevOps
    • Geliştirici Araçları
    • Konteyner & K8s
  • AI & Veri
    • Yapay Zeka
    • Veri & Analitik
  • Güvenlik
    • Güvenlik & Kimlik
    • Kurumsal Teknoloji
  • Hakkımda
    • İletişim
×
  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka
  • Başlangıç
  • Güvenlik & Kimlik
  • BlockOnPossibleDataLoss=True: Neden Dostunuz?
DevOps Geliştirici Araçları Güvenlik & Kimlik Microsoft Azure BlockOnPossibleDataLoss, DACPAC, Publish profile, SqlPackage, SSMS Aşkın KILIÇ 18/08/2026 3 Yorumlar

BlockOnPossibleDataLoss=True: Neden Dostunuz?

BlockOnPossibleDataLoss=True: Neden Dostunuz?
📑 İçindekiler
  1. BlockOnPossibleDataLoss nedir?
  2. SSMS'te nerede devreye girer?
  3. Geliştirici döngüsünde yaşanan gerilim
  4. Publish profile ile ortama göre koruma
  5. SSMS tarafındaki önemli fark
  6. Ne söylediğinizin farkında olun
  7. Üretime yaklaştıkça daha bilinçli olun
  8. İlgili İçerikler
  9. Kaynaklar ve İleri Okuma

⏱️ 3 dk okuma📅 18 Ağustos 2026

Şema değişikliklerini yayınlarken karşınıza çıkan BlockOnPossibleDataLoss ayarı, geliştiricilerin çoğu zaman “yolumdan çekil” dediği, üretim ortamına yaklaştıkça iş biriminin en güçlü savunucusuna dönüşen bir koruma katmanıdır. Bu yazıda ayarın Database Projects ve SQL Server Management Studio (SSMS) tarafındaki davranışını, hangi ortamda açık ya da kapalı tutmanın daha mantıklı olduğunu ve publish profile yaklaşımıyla nasıl esnek bir denge kurabileceğinizi ele alıyoruz.

BlockOnPossibleDataLoss nedir?

Bu ayar, hedef veritabanının mevcut şeması ile yayınlamak istediğiniz şema arasındaki farkı değerlendirir ve uygulamanın veri kaybına yol açıp açmayacağını hesaplar. Cevap “evet” ise dağıtım durdurulur. Hem Database Projects hem de SSMS tarafında varsayılan değeri True‘dur.

En bariz örnek, bir tablonun veya kolonun silinmesidir; bu tür bir değişiklik doğrudan veri kaybı demektir. Daha az fark edilen bir örnek de bir kolonun veri tipini daralttığınız durumlardır: INT‘ten TINYINT‘e geçtiğinizde sıfırın altındaki ya da 255’in üzerindeki mevcut değerleri kaybetme riski doğar. BlockOnPossibleDataLoss=True olduğunda motor bu değerlendirmeleri yapar, şema yayınlanırken verinin kazara silinmesini engeller.

SSMS’te nerede devreye girer?

Database Projects tarafında karşılaştırma, kaynağınızdaki DACPAC ile hedef veritabanından türetilen meta veri arasında yapılır. SSMS içindeki Table Designer ve Database Diagrams gibi görsel araçlarda ise benzer şema değişiklikleri “Kaydet” ya da Ctrl+S anında bloklanır. Böylece son SQL yedeğinizi telaşla aramak zorunda kalmazsınız.

Geliştirici döngüsünde yaşanan gerilim

“Inner loop” dediğimiz yerel geliştirme döngüsü hızlıdır; birkaç dakikada bir derleyip yayınlayarak fikirleri sınarsınız. Bu tempoda BlockOnPossibleDataLoss can sıkıcı bir engel gibi hissedilebilir. Sonuçta tabloyu düşürmek, kolonu silmek veya tipi daraltmak iterasyonun doğasında var ve yerel veritabanınızda üretim verisi yok. Bu yüzden geliştirme ortamındaki koruma katmanları çoğu zaman yolu tıkayan ayrıntılara dönüşür.

Publish profile ile ortama göre koruma

Database Projects, tıpkı.NET’in C# dosyalarını DLL’e derlemesi gibi SQL dosyalarını DACPAC’e derler. Bu paket, çapraz platform komut satırı aracı olan SqlPackage ile gerçek bir veritabanına yayınlanır. Olası veri kaybı değerlendirmesi ve BlockOnPossibleDataLoss ayarının uygulanması da bu aşamada gerçekleşir.

Geliştiricilerin çoğunun atladığı nokta Publish Profile. Yayın sürecinin isteğe bağlı bu bileşeni, veritabanı ve dağıtım ayarlarını tanımlayıp yeniden kullanılabilir bir profil olarak saklamanızı sağlar. Daha da önemlisi, farklı ortamlar için farklı publish profile dosyaları oluşturabilirsiniz:

  • Geliştirme profilinde BlockOnPossibleDataLoss‘u devre dışı bırakarak hız ve iterasyonu önceleyebilirsiniz.
  • UAT ve üretim profillerinde ise aynı ayarı açık tutarak veriyi koruma önceliğini garanti altına alabilirsiniz.

Aynı Database Project, aynı DACPAC; ama dağıtım yaptığınız ortama göre değişen koruma seviyeleri. Geliştirici hızı ile üretim verisinin güvenliği arasında seçim yapmak zorunda değilsiniz.

SSMS tarafındaki önemli fark

SSMS’te BlockOnPossibleDataLoss, “Prevent saving changes that require table re-creation” adıyla karşınıza çıkar ve varsayılan olarak açıktır. Database Projects’ten farkı şu: Bu ayar sunucu, veritabanı veya ortama göre değil, global düzeyde tanımlıdır.

Yani ayarı yerel geliştirme deneyiminizi hızlandırmak için kapattığınızda, bağlantınızı UAT ya da üretim ortamına çevirdiğinizde de aynı korumasız halde kalırsınız. Ayar sizinle birlikte ortam değiştirmez; sonuçları ise değişir.

Ne söylediğinizin farkında olun

Bu korumayı yerel döngüde devre dışı bıraktığınızda SSMS’e “geliştirme verimi umurumda değil” demiyorsunuz; “beni olası veri kaybından koruma” diyorsunuz. Aradaki fark küçük gibi görünse de sonuçları büyük. Bu yüzden SSMS ayarını kapattıysanız, bağlantı değiştirdiğinizde bu tercihi hatırlamak size düşer.

Üretime yaklaştıkça daha bilinçli olun

Buradan çıkan mesaj “her koşulda BlockOnPossibleDataLoss=True kullanın” değil. Yerel geliştirme döngüsünde kapatmak son derece anlamlı olabilir. Asıl mesele, üretime yaklaştıkça şema değişikliklerinin nasıl dağıtıldığı konusunda daha kasıtlı davranmak.

SSMS güçlü bir araç; ama UAT ve üretime doğrudan DDL veya şema değişikliği uygulamak istisna olmalı, dağıtım stratejinizin merkezinde yer almamalıdır. Database Projects ve SqlPackage, bu iş için tasarlanmış mekanizmalar sunar:

  • Declarative (bildirimsel) şema yönetimi
  • Tekrarlanabilir dağıtımlar
  • Ortama özel publish profile dosyaları
  • BlockOnPossibleDataLoss gibi güvenlik önlemleri

Yerelde hızlı hareket edin, UAT’ta ölçülü ilerleyin, üretimde sorgulayıcı olun. BlockOnPossibleDataLoss=True her zaman en iyi arkadaşınız gibi hissettirmese de veri gerçekten önem kazandığı anda tam olarak öyle olur. İş biriminin veritabanı dağıtımlarında sahip olabileceği en güçlü savunuculardan biridir.

İlgili İçerikler

  • Kubernetes Dashboard’dan Headlamp’a: Neden Geçiş Mantıklı?
  • Azure Boards’ta Markdown Düzenleyici Neden Daha Sakin Oldu?
  • Dependabot’ta Bekleme Süresi: Neden Üç Gün?

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • Your best friend: BlockOnPossibleDataLoss=True — Jerry Nixon (Azure SQL Dev Corner)
  • Fundamentals of Azure DevOps with SQL Projects
  • SQL Server Management Studio (SSMS) Belgeleri
  • Azure SQL Dev Corner
🤖Bu yazı yapay zeka (büyük dil modelleri) ile hazırlanmış, insan editör tarafından incelenmiştir. İçerik üretim sürecimiz.
Aşkın KILIÇ
Aşkın KILIÇYazar

20+ yıl deneyimli Azure Solutions Architect. Microsoft sertifikalı bulut mimari ve DevOps danışmanı. Azure, yapay zekâ ve bulut teknolojileri üzerine Türkçe teknik içerikler üretiyor.

AZ-305AZ-104AZ-500AZ-400DP-203AI-102

İlgili Yazılar

Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler10 Nis 2026
Red Hat Summit 2026: Azure OpenShift ile AI Üretime Geçti
Red Hat Summit 2026: Azure OpenShift ile AI Üretime Geçti12 May 2026
GitHub Copilot Agent İşlemlerinde Kurumsal İzin Yönetimi
GitHub Copilot Agent İşlemlerinde Kurumsal İzin Yönetimi10 Eyl 2026
OpenAI ve Broadcom'dan Jalapeño: LLM'e Özel Çip Geliyor
OpenAI ve Broadcom'dan Jalapeño: LLM'e Özel Çip Geliyor24 Haz 2026

Bu içerik işinize yaradı mı?

Benzer içerikleri kaçırmamak için YouTube ve GitHub hesaplarımı takip edin.

YouTube GitHub

Haftalık Bülten

Her pazar özenle seçilmiş teknoloji yazıları doğrudan e-postanıza gelsin.

Etiket BlockOnPossibleDataLoss DACPAC Publish profile SqlPackage SSMS
Önceki yazı

GitHub Kişisel Depolarda Yorumdan Kullanıcı Engelleme

Sonraki yazı

Azure Pipelines’a Apple Silicon ve Xcode 27 Geldi

İlginizi Çekebilir

Data API builder 2.1.5 JSON ve vector Tiplerini Taşıyor
Aşkın KILIÇ 0

Data API builder 2.1.5 JSON ve vector Tiplerini Taşıyor

02/10/2026
GitHub Copilot VS Code Eylül 2026 Sürüm Notlarında Ne Var
Aşkın KILIÇ 0

GitHub Copilot VS Code Eylül 2026 Sürüm Notlarında Ne Var

01/10/2026
GitHub-hosted Agents: Azure Pipelines'ta Dakika Bazlı Ücret
Aşkın KILIÇ 0

GitHub-hosted Agents: Azure Pipelines’ta Dakika Bazlı Ücret

01/10/2026

3 comments

comments user
Mehmet K. 18/08/2026 10:49

Geçen ay tam bu yüzden prod’da bir sütun silindi, sonradan fark ettik. Bu ayarı bilseydik o felaketi yaşamazdık. Ortam bazlı publish profile kullanımını biraz daha detaylı anlatsanız iyi olur, tam oturduramadım kafamda.

Yanıtla
comments user
Tuğçe R. 18/08/2026 14:52

Biz tam da bunu production’da öğrendik, bir kolon drop işlemi sessiz sedasız geçmişti neyse ki yedeğimiz vardı. Şimdi her publish profile’da bu ayarı kontrol etmek alışkanlık haline geldi. Ortam bazlı profile kullanımını detaylı anlattıysanız onu merak ediyorum açıkçası.

Yanıtla
comments user
İrem B. 18/08/2026 21:18

Bunu yıllarca false bırakıp acı öğrendim, prod’da bir kolon drop’ı geri dönüşü olmayan bir şekilde gitti. Ortam bazlı profile yaklaşımı mantıklı ama dev ortamında sürekli engellerle karşılaşınca insanlar genelde kapatıp unutuyor, asıl tehlike orada sanırım.

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • Data API builder 2.1.5 JSON ve vector Tiplerini Taşıyor
    02/10/2026 Data API builder 2.1.5 JSON ve vector Tiplerini Taşıyor
  • GitHub Copilot VS Code Eylül 2026 Sürüm Notlarında Ne Var
    01/10/2026 GitHub Copilot VS Code Eylül 2026 Sürüm Notlarında Ne Var
  • OpenAI'ın The Eternal Complement Yazısı ve Yürütme Çağı
    01/10/2026 OpenAI’ın The Eternal Complement Yazısı ve Yürütme Çağı
  • GitHub-hosted Agents: Azure Pipelines'ta Dakika Bazlı Ücret
    01/10/2026 GitHub-hosted Agents: Azure Pipelines’ta Dakika Bazlı Ücret
  • npm Trusted Publishing ile dist-tag Yönetimi Token'sız
    01/10/2026 npm Trusted Publishing ile dist-tag Yönetimi Token’sız
  • 25 Dolar Altında Yapay Zeka Uygulaması mı? İşte Nasıl Yapılır!
    10/03/2026 25 Dolara Yapay Zeka Uygulaması Nasıl Yapılır?
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
    18/03/2026 Terminalde AI Ajanlarını Koddan Teste Taşımak: azd ile Gerçekten Yerel Deneyim
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • vcpkg'de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
    06/04/2026 vcpkg’de Paralel Kurulum ve Güvenlik Yaması: Neler Değişti?
  • MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
    08/04/2026 MCP Apps’i Kolaylaştıran Fluent API: Sahada Ne Değişiyor?
  • Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
    06/04/2026 Yapay Zekâ Çağında Sanayi Politikası: Asıl Mesela Ne?
  • Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler
    10/04/2026 Microsoft Foundry Mart 2026: Sahadan İlk İzlenimler

Hakkımda

Aşkın KILIÇ

Microsoft Azure Çözüm Uzmanı. Bulut bilişim, yapay zekâ, DevOps ve kurumsal güvenlik üzerine yazılar yazıyorum.

Devamını Oku →

Kategoriler

  • Azure
  • Bulut Altyapı
  • DevOps
  • Geliştirici Araçları
  • Güvenlik & Kimlik
  • Konteyner & Kubernetes
  • Kurumsal Teknoloji
  • Microsoft 365
  • Microsoft Azure
  • Veri & Analitik
  • Yapay Zeka

Popüler Etiketler

AI ajanları ASP.NET Core Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure OpenAI azure sdk Azure SQL bulut bilişim CI/CD code review copilot Copilot CLI DevOps geliştirici verimliliği GitHub GitHub Actions GitHub Copilot güvenlik Kimlik Doğrulama Kubernetes Kurumsal geliştirme kurumsal güvenlik kurumsal yapay zeka maliyet optimizasyonu MCP Microsoft Agent Framework Microsoft Azure Microsoft Entra ID Microsoft Foundry otomasyon performans Pull Request RAG REST API SEO uyumlu verimlilik veri yönetimi Visual Studio Visual Studio 2026 VS Code yapay zeka Yazılım geliştirme
  • Gizlilik Politikası
  • Çerez Politikası
  • Kullanım Koşulları
  • Hakkımda
  • İletişim

© 2026 Aşkın KILIÇ | Tüm hakları saklıdır. | Powered By SpiceThemes

Çerez tercihleri Zorunlu çerezler sitenin çalışması için kullanılır. Analitik çerezler yalnız açık izninizden sonra Google Analytics ve Microsoft Clarity için etkinleştirilir. KVKK ve Çerez Politikası
✉

Haftalık Bülten

Azure, DevOps ve Yapay Zeka dünyasındaki en güncel içerikleri her hafta doğrudan e-postanıza alın.

Spam yok. İstediğiniz zaman iptal edebilirsiniz.
📱
Uygulamayı Yükle Ana ekrana ekle, çevrimdışı oku
Ana Sayfa
Kategoriler
💻 Geliştirici Araçları 469 yazı 🏗️ Bulut Altyapı 378 yazı 🤖 Yapay Zeka 314 yazı 🔧 DevOps 260 yazı ☁️ Microsoft Azure 254 yazı 🔒 Güvenlik & Kimlik 214 yazı 🏢 Kurumsal Teknoloji 96 yazı 📊 Veri & Analitik 66 yazı 🐳 Konteyner & Kubernetes 61 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← GitHub Kişisel Depolarda Yorum...
    Azure Pipelines’a Apple ... →
    📩

    Gitmeden önce!

    Her pazar özenle seçilmiş teknoloji yazıları ve AI haberleri doğrudan e-postanıza gelsin. Ücretsiz, spam yok.

    🔒 Bilgileriniz güvende. İstediğiniz zaman ayrılabilirsiniz.

    📬 Haftalık bülten: Teknoloji + AI haberleri
    Beni Takip Et Yeni Azure / AI / DevOps yazılarını GitHub ve RSS üzerinden takip edin.
    GitHub RSS