İç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ıç
  • Geliştirici Araçları
  • BACPAC ve DACPAC: Benzerlikler ve Temel Farklar
Bulut Altyapı Geliştirici Araçları Azure SQL Database, BACPAC, DACPAC, SqlPackage, Veritabanı Taşıma Aşkın KILIÇ 31/08/2026 4 Yorumlar

BACPAC ve DACPAC: Benzerlikler ve Temel Farklar

BACPAC ve DACPAC: Benzerlikler ve Temel Farklar
📑 İçindekiler
  1. BACPAC: Azure SQL Database için taşınabilirlik
  2. BACPAC'in içinde ne var?
  3. Uyumluluk kısıtı
  4. DACPAC: dağıtım artefaktı ve ötesi
  5. Publish ve script seçenekleri
  6. Extract sırasında veri seçenekleri
  7. DACPAC ile taşınabilirlik: pratik akış
  8. Özet: BACPAC ve DACPAC ne zaman?
  9. İlgili İçerikler
  10. Kaynaklar ve İleri Okuma

⏱️ 5 dk okuma📅 31 Ağustos 2026

SQL veritabanınızı bir ortamdan diğerine taşımak ya da yalnızca şema nesnelerini aktarmak istediğinizde sık karşılaşılan iki dosya biçimi vardır: BACPAC ve DACPAC. İkisi de başta SqlPackage olmak üzere birçok araç tarafından destekleniyor, ama amaçları, kapsamları ve esneklikleri birbirinden farklı. Bu yazıda, iki formatın gerçekte neyi çözdüğünü ve hangi senaryoda hangisinin işe yaradığını kaynak makale çerçevesinde ele alıyoruz.

Kısaca: BACPAC, öncelikle Azure SQL Database yüzey alanıyla sınırlı bir modele sahiptir, şema ve veriyi birlikte taşıyabilen taşınabilir bir kopyadır. DACPAC ise temelde bir dağıtım (deployment) artefaktıdır; daha geniş hedef platform modellerini destekler ve isteğe bağlı olarak veri de içerebilir.

BACPAC: Azure SQL Database için taşınabilirlik

BACPAC dosyaları çoğu kullanıcı için export ve import işlemleriyle özdeşleşmiştir. Bu işlemler, veritabanı nesnelerini ve verilerini farklı SQL sürümleri arasında (Azure’dan SQL Server’a ya da eski SQL Server sürümlerine geri dönüş dahil) taşımayı mümkün kılar. Bu davranış, yalnızca eşit veya daha üst sürümlere geri yüklenebilen native yedek (BAK) dosyalarından belirgin biçimde ayrılır. Import ve export işlevine SQL Server Management Studio (SSMS), VS Code, Azure Portal ve komut satırında SqlPackage üzerinden ulaşılabilir.

BACPAC esnek bir veri taşıma biçimidir, ama bu esnekliğin bedeli hız kaybıdır. Bir BACPAC export veya import işlemi, native SQL Server yedekleme/geri yükleme operasyonlarına göre genellikle daha yavaş çalışır. Sebep, yaklaşımın farklı olması: BACPAC işlemleri şemayı ve tablo verilerini mantıksal olarak çıkarıp yeniden oluştururken, native backup/restore işlemleri veritabanı sayfalarını ve log kayıtlarını SQL Server’ın optimize edilmiş yedek formatında kopyalar. Azure SQL Database’de dosya seviyesindeki yedekler servisin bir parçası olarak yönetilir; SQL Server tarafında ise bu sorumluluk sizde veya DBA’inizde.

BACPAC’in içinde ne var?

Bir BACPAC dosyası hem nesne tanımlarını hem de tablolardaki verinin bir kopyasını içerir. Uzantısını .zip olarak değiştirip klasöre çıkardığınızda içeriği görebilirsiniz. Paket içinde nesne yapısını tanımlayan bir model.xml dosyası ve BCP dosyalarının bulunduğu bir data klasörü yer alır. Bu BCP dosyaları export sırasında yazılır, import sırasında ise bulk insert işlemiyle hedef veritabanına aktarılır.

Uyumluluk kısıtı

BACPAC üzerinden veri taşınabilirliği, dosyanın Azure SQL Database’e import edilebileceğini garanti etmeye odaklıdır. Bunun doğal sonucu olarak BACPAC yalnızca Azure SQL Database’de kullanılabilecek nesneleri barındırabilir. Windows login’leri, filestream sütunları veya SQL CLR öğeleri gibi Azure SQL Database’in desteklemediği unsurlara sahip bir SQL Server veritabanından BACPAC oluşturulamaz.

Bu tür engellerle karşılaşırsanız bir seçenek, veritabanının bir kopyasını alıp desteklenmeyen nesneleri kaldırmak. Ama hedefiniz Azure SQL Database değilse bu kısıtlamalar sizin için anlamlı olmayabilir. DACPAC formatının yetenekleri burada devreye giriyor.

DACPAC: dağıtım artefaktı ve ötesi

DACPAC dosyaları çoğunlukla veritabanı dağıtımlarıyla anılır. Bir SQL projesi build ettiğinizde çıktı bir DACPAC dosyasıdır, ama DACPAC mevcut bir veritabanından doğrudan extract edilerek de üretilebilir. DACPAC, veritabanının şema tanımını ya da modelini içerir. DACPAC araçları bu modeli kullanarak bir dağıtım planı üretir; bu plan T-SQL script olarak çıkarılabilir ya da doğrudan uygulanabilir (publish).

Yeni bir veritabanı için dağıtım planı tüm nesneleri sıfırdan oluşturur. Var olan bir veritabanı içinse plan, mevcut nesnelerin DACPAC’teki tanıma uyacak biçimde nasıl güncelleneceğini belirler.

Publish ve script seçenekleri

Publish ve script operasyonları, üretilen dağıtım planını özelleştirmek ve analiz etmek için pek çok seçenek sunar:

  • GenerateSmartDefaults: Var olan satırların bulunduğu bir tabloya nullable olmayan bir sütun eklenirken varsayılan değer eklenmesini sağlar. Plan davranışını özelleştiren bir örnektir.
  • AllowTableRecreation: Dağıtım planının bir tablodaki veriyi yeni bir konuma kopyalayıp kopyalamayacağını denetler ve buna göre işlemi durdurabilir ya da devam ettirebilir. Bu da planı analiz eden bir örnektir.

Bu dinamik yapı sayesinde DACPAC dosyaları basit uygulamalardan binlerce veritabanı barındıran çok kiracılı SaaS senaryolarına kadar geniş bir yelpazede kullanılabilir.

Extract sırasında veri seçenekleri

Bir extract işlemiyle üretilen DACPAC, varsayılan olarak veritabanındaki tüm nesne tanımlarını içerir ve bu nesneler SQL Server, Azure SQL Database, Fabric’te SQL database gibi farklı hedef platformlara ait olabilir. Extract işlemi şu yönlerde de değiştirilebilir:

  • DACPAC’ten sunucu kapsamlı (server-scoped) öğeleri hariç tutmak
  • Tablo verilerini doğrudan DACPAC içine dahil etmek (BACPAC’e benzer biçimde)
  • Tablo verilerini Azure Blob Storage üzerinde parquet dosyaları olarak çıkarmak

Verinin DACPAC dosyasına ya da yanına dahil edilebilmesi, Azure SQL Database uyumluluğu şartının engel oluşturduğu senaryolarda da taşınabilirlik sağlar. DACPAC publish ve extract işlemleri çoğu araçta mevcut olsa da bu ileri yetenekleri kullanmak için genellikle SqlPackage CLI gerekir.

DACPAC ile taşınabilirlik: pratik akış

Aşağıda SqlPackage CLI’daki extract ve publish komutlarını kullanarak bir veritabanı kopyasını bir sunucudan diğerine DACPAC üzerinden taşımanın kısa bir akışı var. BACPAC’in export/import ikilisiyle benzer bir işlem olsa da DACPAC oluşturulduğunda içeriğin Azure SQL Database’e import edilmeye hazır olduğunun garantisi yoktur.

Extract adımı: Orijinal veritabanının veri kopyasını da içeren bir DACPAC oluşturmak için /p:ExtractAllTableData=true ve isteğe bağlı olarak /p:ExtractReferencedServerScopedElements=false eklenir.

sqlpackage /action:extract /sourceconnectionstring:"<sourceconnectionstring>" /targetfile:"C:\extracted.dacpac" /p:ExtractAllTableData=true  /p:ExtractReferencedServerScopedElements=false

Publish adımı: DACPAC içindeki veri, publish sırasında varsayılan olarak hedef veritabanına yazılır. Standart publish akışını değiştirmek için şu özellikler eklenebilir:

  • Farklı veritabanı türleri arasında geçiş için: /p:AllowIncompatiblePlatform=true
  • SQL Server’daki Windows login’lerini Azure SQL Database’e taşırken atlamak için: /p:ExcludeObjectTypes=Logins;Users
sqlpackage /action:publish /sourcefile:"C:\extracted.dacpac" /targetconnectionstring:"<targetconnectionstring>" /p:AllowIncompatiblePlatform=true /p:ExcludeObjectTypes=Logins;Users

SqlPackage; Integrated authentication, SQL authentication ve Microsoft Entra ID kimlik doğrulama yöntemlerini destekler. Bağlantı dizesine tarayıcı üzerinden kimlik doğrulama için Authentication=Active Directory Interactive, öncesinde az login komutu çalıştırılarak terminal kimlik doğrulaması için Authentication=Active Directory Default ekleyebilirsiniz.

Özet: BACPAC ve DACPAC ne zaman?

Yaygın bir tanım olarak “BACPAC veri içerir, DACPAC içermez” cümlesi eksik kalıyor. Doğrusu şu: BACPAC varsayılan olarak veri içerir ve içindeki nesneler Azure SQL Database ile uyumlu olmak zorundadır. DACPAC ise veritabanı dağıtımlarında öne çıkan bir formattır ve isteğe bağlı olarak veri kopyası da barındırabilir.

SqlPackage operasyonları açısından:

  • Export: Veritabanı şeması/modeli ve veriyi içeren bir BACPAC üretir. Ağırlıklı olarak Azure SQL Database ile etkileşimde bir veritabanının mantıksal içeriğini taşımak veya arşivlemek için kullanılır.
  • Extract: Tablolar, view’lar, prosedürler gibi şemayı/modeli içeren bir DACPAC üretir. Şema dağıtımı, karşılaştırma ve sürüm yönetimi için kullanılır.
  • Extract (Table Data seçeneğiyle): Şemayı/modeli ve veriyi içeren bir DACPAC üretir. Bir veritabanının mantıksal içeriğini taşımak veya arşivlemek için kullanılır.

BACPAC dosyaları Azure SQL Database ile sıkı biçimde entegredir; import/export yetenekleri Azure Portal, az CLI ve Azure PowerShell cmdlet’leri üzerinden sunulur. Hem BACPAC hem DACPAC dosyaları SSMS, VS Code ve SqlPackage CLI tarafından desteklenir.

İlgili İçerikler

  • Azure SQL Vektör Arama: Optimizer Zekâsı Devrede
  • GitHub Copilot Politika ve Faturalama Değişiklikleri
  • Microsoft.Data.SqlClient ile Yerleşik Yeniden Deneme Mantığı

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • Bacpac and Dacpac, the similarities and differences – Azure SQL Dev Corner (Drew Skwiers-Koballa)
  • SqlPackage CLI Referansı
  • Azure SQL Dev Blog
🤖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

Xcode 27 Runner Image ile Apple Silicon'da CI Kurmak
Xcode 27 Runner Image ile Apple Silicon'da CI Kurmak17 Eki 2026
VS Code'da MSBuild Binlog'ları Copilot ile Analiz Etme
VS Code'da MSBuild Binlog'ları Copilot ile Analiz Etme27 Tem 2026
Azure SDK Haziran 2026: Transcription ve Planetary Pro GA'da
Azure SDK Haziran 2026: Transcription ve Planetary Pro GA'da6 Tem 2026
Koddan Buluta: azd ile AI Ajanınızı Microsoft Foundry’ye Dakikalar İçinde Taşıyın
Koddan Buluta: azd ile AI Ajanınızı Microsoft Foundry’ye Dakikalar İçinde Taşıyın23 Mar 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 Azure SQL Database BACPAC DACPAC SqlPackage Veritabanı Taşıma
Önceki yazı

Azure App Service ile AI Hazır Uygulamalara Pratik Yol

Sonraki yazı

VS Code Ağustos 2026: Copilot Ajan Oturumları Yenilendi

İlginizi Çekebilir

GitHub Copilot'ta Kaldırılan Modeller ve Geçiş Planı
Aşkın KILIÇ 0

GitHub Copilot’ta Kaldırılan Modeller ve Geçiş Planı

18/10/2026
Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol
Aşkın KILIÇ 0

Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol

18/10/2026
Visual Studio 2026: İlk Hatada Derlemeyi Durdurma
Aşkın KILIÇ 0

Visual Studio 2026: İlk Hatada Derlemeyi Durdurma

18/10/2026

4 comments

comments user
Ahmet Y. 01/09/2026 00:17

Biz hep BACPAC kullanıyorduk ama DACPAC’ın publish esnekliği gerçekten çok daha kullanışlı, özellikle birden fazla ortamı hedefliyorsanız. Azure’a geçişte bu farkı bilmemek ciddi zaman kaybettirebilir. Bu arada şu yazınız da güzeldi: VS Code Ağustos 2026: Copilot Ajan Oturumları Yenilendi — https://www.askinkilic.com.tr/vs-code-agustos-2026-copilot-ajan-oturumlari-yenilendi/

Yanıtla
comments user
Barış U. 01/09/2026 00:35

Uzun süredir bu ikisini kafamda karıştırıyordum, özellikle Azure’a taşıma yaparken hangisini seçeceğim konusunda hep tereddüt yaşadım. DACPAC’ın sadece şema taşıdığını net anlamamıştım, şimdi oturdu. Bu arada şu yazınız da güzeldi: VS Code Ağustos 2026: Copilot Ajan Oturumları Yenilendi — https://www.askinkilic.com.tr/vs-code-agustos-2026-copilot-ajan-oturumlari-yenilendi/

Yanıtla
comments user
Burcu Ç. 01/09/2026 02:17

Uzun zamandır bu ikisini kafamda tam oturtamamıştım, özellikle ne zaman BACPAC ne zaman DACPAC kullanacağımı. Şema+veri vs sadece şema ayrımı çok net açıklanmış. Bu arada şu yazınız da güzeldi: Azure App Service ile AI Hazır Uygulamalara Pratik Yol — https://www.askinkilic.com.tr/azure-app-service-ile-ai-hazir-uygulamalara-pratik-yol/

Yanıtla
comments user
Onur P. 01/09/2026 11:02

BACPAC ve DACPAC’ı hep birbirinin yerine kullanabilir sanıyordum, aradaki farkı bu kadar net hiç anlamamıştım. Özellikle DACPAC’ın sadece şema taşıdığını bilmek production ortamında ciddi bir hata yapmamı engelleyebilir. Bu arada şu yazınız da güzeldi: Enterprise Live Migrations is now in public preview — https://www.askinkilic.com.tr/enterprise-live-migrations-is-now-in-public-preview/

Yanıtla

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • GitHub Copilot'ta Kaldırılan Modeller ve Geçiş Planı
    18/10/2026 GitHub Copilot’ta Kaldırılan Modeller ve Geçiş Planı
  • Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol
    18/10/2026 Logitech MX Keypad ve GitHub Copilot: Ambient Kontrol
  • Visual Studio 2026: İlk Hatada Derlemeyi Durdurma
    18/10/2026 Visual Studio 2026: İlk Hatada Derlemeyi Durdurma
  • Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası
    18/10/2026 Azure Cloud-Native Temeli: AI Ajanları İçin Yol Haritası
  • GitHub Code Quality Lisans Kullanımını CSV ile Doğrulayın
    17/10/2026 GitHub Code Quality Lisans Kullanımını CSV ile Doğrulayın
  • DevOps Güncellemeleri
    09/03/2026 Azure DevOps Server Şubat Güncellemesi: Güvenlik
  • 2026-03-10_15-35-23
    10/03/2026 Microsoft 365 E7: Yapay Zeka ve Güvenlik Bir Arada
  • GitHub Copilot Pro Denemeleri Neden Durdu?
    11/04/2026 GitHub Copilot Pro Denemeleri Neden Durduruldu?
  • Artımlı Anlık Görüntü: Anında Geri Yükleme
    09/03/2026 Artımlı Anlık Görüntü: Anında Geri Yükleme
  • Bulut Sunucu Altyapısı
    09/03/2026 Microsoft Sovereign Cloud: İzolasyonda Güvenli Bulut
  • 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 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 public preview 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ı 507 yazı 🏗️ Bulut Altyapı 407 yazı 🤖 Yapay Zeka 331 yazı ☁️ Microsoft Azure 279 yazı 🔧 DevOps 277 yazı 🔒 Güvenlik & Kimlik 223 yazı 🏢 Kurumsal Teknoloji 107 yazı 📊 Veri & Analitik 78 yazı 🐳 Konteyner & Kubernetes 62 yazı 📧 Microsoft 365 22 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← Azure App Service ile AI Hazır...
    VS Code Ağustos 2026: Copilot ... →
    📩

    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