İç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ıç
  • DevOps
  • VS Code’da SQL Projects ile Veritabanı Refactor
DevOps Geliştirici Araçları Microsoft Azure CI/CD, refactor log, schema taşıma, SQL Projects, VS Code Aşkın KILIÇ 31/07/2026 0 Yorumlar

VS Code’da SQL Projects ile Veritabanı Refactor

VS Code'da SQL Projects ile Veritabanı Refactor
📑 İçindekiler
  1. SQL Projects ve refactor log neden önemli?
  2. Örnek senaryo: AdventureWorks üzerinde üç değişiklik
  3. Yeni şema eklemek ve tabloyu taşımak
  4. Tabloyu yeniden adlandırmak
  5. Değişikliklerin dağıtılması
  6. Pratikte neden anlamlı?
  7. İlgili İçerikler
  8. Kaynaklar ve İleri Okuma
⏱️ 5 dk okuma📅 31 Temmuz 2026

Bir veritabanı olgunlaştıkça tablo adları, şema düzeni ve nesne yerleşimi zamanla anlamını yitirebilir. Böyle durumlarda yeniden adlandırma ve şema değişiklikleri kaçınılmaz olur; ancak bunları farklı ortamlarda veri kaybetmeden uygulamak kolay değildir. Microsoft’un Azure SQL Dev Corner bloğunda Drew Skwiers-Koballa, VS Code üzerindeki SQL Database Projects eklentisinin bu tür refactor işlemlerini nasıl otomatikleştirdiğini anlatıyor. Bu yazıda, kaynağı temel alarak SQL projelerinde tablo taşıma ve yeniden adlandırma operasyonlarının dağıtım planına nasıl yansıtıldığına bakacağız.

SQL Projects ve refactor log neden önemli?

SQL database projects, veritabanı şemasını kaynak kontrolünde tutmak, değişiklikleri izlemek ve ekip içinde birlikte çalışmak için kullanılan bir yapıdır. En güçlü yani, projede tanımlanan hedef durum ile dağıtım yapılan ortam arasındaki farkı dinamik hesaplayıp uygun bir betik üretebilmesidir.

Klasik T-SQL tarafında bir tabloyu veya sütunu yeniden adlandırmak için sp_rename, bir nesneyi başka bir şemaya taşımak için ise ALTER SCHEMA... TRANSFER yeterlidir. Sorun, aynı değişikliğin proje kaynak dosyalarına ve birden fazla ortama tutarlı biçimde yansıtılması gerektiğinde başlar. VS Code için SQL Database Projects eklentisi, refactor işlemlerini kaynak dosyalara uygular ve bir refactor log dosyasında kaydeder. Böylece dağıtımda nesne baştan oluşturulmak yerine sp_rename veya ALTER SCHEMA... TRANSFER kullanılır, mevcut veri yerinde korunur.

Örnek senaryo: AdventureWorks üzerinde üç değişiklik

Kaynak yazıda örnek olarak AdventureWorks veritabanı kullanılıyor ve şu üç değişiklik yapılıyor:

  • [ProductCatalog] adında yeni bir şema eklemek
  • SalesLT.ProductDescription tablosunu bu yeni şemaya taşımak
  • SalesOrderDetail tablosunu SalesOrderLine olarak yeniden adlandırmak

Elinizde henüz bir SQL projesi yoksa SqlPackage CLI ile veya VS Code, SQL Server Management Studio ve Visual Studio gibi IDE’ler ile mevcut bir veritabanından proje üretebilirsiniz. VS Code tarafında Object Explorer içindeki veritabanı bağlam menüsü, projeyi oluşturmak ve güncellemek için hazır seçenekler sunuyor.

Yeni şema eklemek ve tabloyu taşımak

SQL projesinde yeni bir şema tanımlamak, aslında CREATE SCHEMA ifadesini içeren yeni bir .sql dosyası eklemek anlamına geliyor. VS Code’daki Database Projects görünümünde proje bağlam menüsünden Add item… seçildiğinde şablon listesi açılıyor. Buradan Schema şablonu seçilip ada ProductCatalog yazıldığında, ilgili CREATE SCHEMA ifadesi projeye eklenmiş oluyor.

Yeni şema hazır olduğuna göre sıra SalesLT.ProductDescription tablosunu taşımaya geliyor. SalesLT/Tables klasöründeki ProductDescription.sql dosyası açılıyor, tablo adının üzerinde sağ tıklanıp bağlam menüsünden önce Refactor, ardından Move to Schema seçiliyor. Projedeki tüm kullanıcı şemaları hedef olarak listeleniyor ve uygulanacak değişiklikler bir önizleme ekranında sunuluyor.

Bu önizlemede yalnızca tablonun tanımı değil, ona referans veren diğer nesnelerdeki güncellemeler ve refactorlog dosyasındaki eklemeler de birlikte gösteriliyor. Apply ile onayladığınızda değişiklikler projeye işleniyor. Refactor log, bir nesnenin adının veya şemasının değiştirildiğini kaydettiği için her dağıtımda bu hareketin daha önce uygulanıp uygulanmadığı takip edilebiliyor. Kaynak yazıda özellikle vurgulandığı gibi, projeyi kaynak kontrolüne gönderirken ProjectName.refactorlog dosyasını da mutlaka eklemek gerekiyor.

Tabloyu yeniden adlandırmak

SQL projects refactor yeteneğinin iyi yönettiği bir diğer operasyon, tablo ve sütun yeniden adlandırma. Refactor log kullanımı, dağıtım sırasında verinin başka bir tabloya taşınmasını gerektirmeden yeniden adlandırma yapılmasını sağlıyor.

SalesOrderDetail tablosunu SalesOrderLine olarak yeniden adlandırmak için editörde nesne adının üzerinde sağ tıklayıp Rename Symbol menüsü kullanılıyor. Refactor ve rename seçenekleri, SQL projesinde nesne adının geçtiği her yerden erişilebilir; örneğin bir tablonun sütununu, o sütuna referans veren view tanımının içinden de yeniden adlandırabilirsiniz. Rename işleminde değişiklikleri doğrudan uygulayabilir ya da proje genelinde önce önizleyebilirsiniz; her iki yol da ProjectName.refactorlog dosyasını günceller.

Kaynakta gösterilen örnekte, şema taşıma ve yeniden adlandırma sonrasında refactor log içeriği kabaca şöyle oluşuyor:

<?xml version="1.0" encoding="utf-8"?>
<Operations Version="1.0" xmlns="http://schemas.microsoft.com/sqlserver/dac/Serialization/2012/02">
<Operation Name="Move Schema" Key="8f599e45-64ea-4636-a369-139cde876a84" ChangeDateTime="07/27/2026 17:06:25">
<Property Name="ElementName" Value="[SalesLT].[ProductDescription]" />
<Property Name="ElementType" Value="SqlTable" />
<Property Name="NewSchema" Value="ProductCatalog" />
<Property Name="IsNewSchemaExternal" Value="False" />
</Operation>
<Operation Name="Rename Refactor" Key="4f955015-b69e-4c8e-b527-761612505adb" ChangeDateTime="07/27/2026 17:10:38">
<Property Name="ElementName" Value="[SalesLT].[SalesOrderDetail]" />
<Property Name="ElementType" Value="SqlTable" />
<Property Name="ParentElementName" Value="[SalesLT]" />
<Property Name="ParentElementType" Value="SqlSchema" />
<Property Name="NewName" Value="SalesOrderLine" />
</Operation>
</Operations>

Değişikliklerin dağıtılması

Refactor log dosyası, proje derlendiğinde .dacpac dosyasının içine dahil oluyor. Dağıtım ister VS Code üzerinden, ister başka bir IDE’den, ister otomatik bir CI/CD ortamından tetiklensin refactor bilgisi bu paketle birlikte taşınıyor.

VS Code’da Generate Script seçeneğiyle dağıtımda çalıştırılacak T-SQL incelenebiliyor. Refactor log kullanımı, dağıtım tarafında dbo.__RefactorLog adlı bir tabloya ihtiyaç duyuyor; bu tablo yoksa dağıtım sırasında oluşturuluyor. Operation anahtarlarını burada saklayarak, aynı SQL projesinin birden çok kez ve farklı ortamlara dağıtılmasına rağmen refactor işlemlerinin tekrar uygulanmamasını sağlıyor:

IF OBJECT_ID(N'dbo.__RefactorLog') IS NULL
BEGIN
CREATE TABLE [dbo].[__RefactorLog] (OperationKey UNIQUEIDENTIFIER NOT NULL PRIMARY KEY)
EXEC sp_addextendedproperty N'microsoft_database_tools_support', N'refactoring log', N'schema', N'dbo', N'table', N'__RefactorLog'
END

Üretilen dağıtım betiğinde refactor işlemlerinin karşılığı olarak sp_rename ve ALTER SCHEMA... TRANSFER komutlarının kullanıldığını görüyorsunuz. Kaynaktaki kesitte, refactor log anahtarlarına atıfta bulunan PRINT ifadeleri de dikkat çekiyor:

CREATE SCHEMA [ProductCatalog];
GO
PRINT N'The following operation was generated from a refactoring log file 8f599e45-64ea-4636-a369-139cde876a84';
PRINT N'Move object [SalesLT].[ProductDescription] to different schema [ProductCatalog]';
GO
ALTER SCHEMA [ProductCatalog] TRANSFER [SalesLT].[ProductDescription];
GO
PRINT N'The following operation was generated from a refactoring log file 4f955015-b69e-4c8e-b527-761612505adb';
PRINT N'Rename [SalesLT].[SalesOrderDetail] to SalesOrderLine';
GO
EXECUTE sp_rename @objname = N'[SalesLT].[SalesOrderDetail]', @newname = N'SalesOrderLine', @objtype = N'OBJECT';

Aynı komutlar, dağıtım doğrudan Publish ile çalıştırıldığında da kullanılıyor. Refactor log .dacpac içine paketlendiği için mevcut CI/CD pipeline’larında artefakt yayımlama ve arşivleme akışlarını değiştirmeye gerek kalmıyor. Dağıtım tamamlandığında hedef veritabanında SalesOrderDetail tablosu SalesOrderLine olarak yeniden adlandırılmış, ProductDescription tablosu ise ProductCatalog şemasına taşınmış oluyor.

Pratikte neden anlamlı?

Klasik yaklaşımda tablo yeniden adlandırma veya şema taşıma; nesneyi silip yeniden oluşturmayı ve veriyi kopyalamayı gerektirebiliyor. Bu, hem risk hem de kesinti demek. SQL Database Projects’in refactor log mekanizması bu operasyonları veri kaybı olmadan uyguluyor, kaynak kontrolünde tuttuğunuz proje ile üretim ortamı arasındaki bağ da kopmuyor. Özellikle çok ortamlı (dev/test/prod) senaryolarda refactor işleminin her ortama yalnızca bir kez uygulanmasını dbo.__RefactorLog tablosundaki kayıtlar belirliyor.

İlgili İçerikler

  • MSSQL Extension v1.43: Azure SQL’i VS Code’dan Kurmak Artık Mümkün
  • VS Code ile SQL Şema Yönetimi Artık Akıcı: Yayın Penceresi ve Şablonlarla Tanışın
  • VS Code’da SQL Kod Analizi Artık Daha Kolay: Kural Ayarlarını Ellemeye Son

Kaynaklar ve İleri Okuma

  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • devblogs.microsoft.com
  • Refactor your database with SQL projects in VS Code – Drew Skwiers-Koballa, Azure SQL Dev Corner
  • SQL Database Projects genel dokümantasyonu (aka.ms/sqlprojects)
  • VS Code SQL Database Projects eklentisi başlangıç rehberi
  • SQL projects refactor kavramları dokümantasyonu
  • Azure SQL Dev Corner 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

Bot PR’lere de CI yolu açıldı: Güvenlikte ince ayar zamanı
Bot PR’lere de CI yolu açıldı: Güvenlikte ince ayar zamanı12 Haz 2026
Azure SDK Release (July 2026)
Azure SDK Release (July 2026)29 Tem 2026
Copilot cloud agent ile Kırık Actions İşini Tek Tıkta Çözmek
Copilot cloud agent ile Kırık Actions İşini Tek Tıkta Çözmek19 May 2026
Kubernetes AI Politikası: Açık Kaynak Sürdürücülüğü Yeni Çağda
Kubernetes AI Politikası: Açık Kaynak Sürdürücülüğü Yeni Çağda30 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 CI/CD refactor log schema taşıma SQL Projects VS Code
Önceki yazı

GitHub Models Kapandı: Alternatifler ve Geçiş Yolu

Sonraki yazı

.NET 11 Nedir? Tüm Yenilikler, Çıkış Tarihi ve Destek Süresi

İlginizi Çekebilir

.NET 11 yenilikleri, çıkış tarihi ve destek süresini özetleyen görsel
Aşkın KILIÇ 0

.NET 11 Nedir? Tüm Yenilikler, Çıkış Tarihi ve Destek Süresi

31/07/2026
GitHub Models Kapandı: Alternatifler ve Geçiş Yolu
Aşkın KILIÇ 1

GitHub Models Kapandı: Alternatifler ve Geçiş Yolu

31/07/2026
Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri
Aşkın KILIÇ 2

Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri

30/07/2026

Yorum gönder Yanıtı iptal et

Yazı Ara

Takip Edin

  • Takipçi
  • Takipçi
  • Takipçi
  • Abone
  • Takipçi
  • .NET 11 yenilikleri, çıkış tarihi ve destek süresini özetleyen görsel
    31/07/2026 .NET 11 Nedir? Tüm Yenilikler, Çıkış Tarihi ve Destek Süresi
  • VS Code'da SQL Projects ile Veritabanı Refactor
    31/07/2026 VS Code’da SQL Projects ile Veritabanı Refactor
  • GitHub Models Kapandı: Alternatifler ve Geçiş Yolu
    31/07/2026 GitHub Models Kapandı: Alternatifler ve Geçiş Yolu
  • Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri
    30/07/2026 Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri
  • Copilot Business ve Enterprise'da Model Varsayılan Açılıyor
    30/07/2026 Copilot Business ve Enterprise’da Model Varsayılan Açılıyor
  • Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
    11/04/2026 Copilot Cloud Agent Metriği: Kullanımı Ölçmek Kolaylaştı
  • Azure MCP Server 2.0: Kendi Sunucunuzda Ajan Otomasyonu
    10/04/2026 Azure MCP Server 2.0: Kendi Sunucunuzda Ajan Otomasyonu
  • .NET 11 Preview 2: Deneyimlerim, Yenilikler ve Gerçek Hayat Notları
    21/03/2026 .NET 11 Preview 2: Deneyimlerim, Yenilikler ve Gerçek Hayat Notları
  • GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
    03/04/2026 GitHub Copilot Cloud Agent İçin Runner Kontrolü: Kurumsal Düzen
  • GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
    07/04/2026 GitHub Code Scanning’de Toplu Düzeltme: PR’lar Hızlandı
  • 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

SİZİN İÇİN DERLEDİK

.NET 11 yenilikleri, çıkış tarihi ve destek süresini özetleyen görsel
Geliştirici Araçları

.NET 11 Nedir? Tüm Yenilikler, Çıkış Tarihi ve Destek Süresi

31/07/2026 Aşkın KILIÇ
VS Code'da SQL Projects ile Veritabanı Refactor
DevOps Geliştirici Araçları Microsoft Azure

VS Code’da SQL Projects ile Veritabanı Refactor

31/07/2026 Aşkın KILIÇ
GitHub Models Kapandı: Alternatifler ve Geçiş Yolu
Bulut Altyapı Geliştirici Araçları Yapay Zeka

GitHub Models Kapandı: Alternatifler ve Geçiş Yolu

31/07/2026 Aşkın KILIÇ
Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri
DevOps Microsoft Azure Yapay Zeka

Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri

30/07/2026 Aşkın KILIÇ
Copilot Business ve Enterprise'da Model Varsayılan Açılıyor
DevOps Güvenlik & Kimlik Microsoft Azure

Copilot Business ve Enterprise’da Model Varsayılan Açılıyor

30/07/2026 Aşkın KILIÇ
Visual Studio'da Modele Ne Kadar Düşüneceğini Söyleyin
DevOps Geliştirici Araçları

Visual Studio’da Modele Ne Kadar Düşüneceğini Söyleyin

30/07/2026 Aşkın KILIÇ
Ingress NGINX Emekli Oluyor: Kubernetes'ten Kritik Uyarı
Bulut Altyapı Güvenlik & Kimlik Konteyner & Kubernetes

Ingress NGINX Emekli Oluyor: Kubernetes’ten Kritik Uyarı

30/07/2026 Aşkın KILIÇ
Dependabot'u Sakinleştirmek: Gruplayın, Yavaşlatın, Güvende
DevOps Geliştirici Araçları

Dependabot’u Sakinleştirmek: Gruplayın, Yavaşlatın, Güvende

29/07/2026 Aşkın KILIÇ
Azure SDK Release (July 2026)
DevOps Geliştirici Araçları Microsoft Azure

Azure SDK Release (July 2026)

29/07/2026 Aşkın KILIÇ
Azure App Service Build 2026: Easy AI, Iv4 ve Yenilikler
Bulut Altyapı DevOps Geliştirici Araçları Microsoft Azure

Azure App Service Build 2026: Easy AI, Iv4 ve Yenilikler

29/07/2026 Aşkın KILIÇ
Copilot Uygulama Metrikleri Artık Tüm Rapor Kırılımlarında
Bulut Altyapı Geliştirici Araçları Yapay Zeka

Copilot Uygulama Metrikleri Artık Tüm Rapor Kırılımlarında

29/07/2026 Aşkın KILIÇ
Azure DevOps Commit Search Genel Kullanıma Açıldı
DevOps Microsoft Azure

Azure DevOps Commit Search Genel Kullanıma Açıldı

29/07/2026 Aşkın KILIÇ

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ı Azure azure app service Azure Cosmos DB Azure Developer CLI Azure DevOps Azure Functions Azure OpenAI azure sdk Azure SQL bulut bilişim C++ CI/CD copilot Copilot CLI DevOps DevSecOps 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 Microsoft Agent Framework Microsoft Azure Microsoft Foundry MSVC otomasyon performans Pull Request Python RAG SEO uyumlu verimlilik veri yönetimi Visual Studio VS Code yapay zeka yapay zeka ajanları 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ı 339 yazı 🏗️ Bulut Altyapı 280 yazı 🤖 Yapay Zeka 240 yazı 🔧 DevOps 198 yazı ☁️ Microsoft Azure 186 yazı 🔒 Güvenlik & Kimlik 161 yazı 🏢 Kurumsal Teknoloji 65 yazı 📊 Veri & Analitik 57 yazı 🐳 Konteyner & Kubernetes 47 yazı 📧 Microsoft 365 21 yazı 📁 Azure 1 yazı
Ara
Popüler
Yapay Zeka Azure Kubernetes DevOps Copilot Docker
Paylaş
WhatsApp
İçindekiler
    ← GitHub Models Kapandı: Alterna...
    .NET 11 Nedir? Tüm Yenilikler,... →
    📩

    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