PowerShell SQL Server Backup Otomasyonu – Full Script
PowerShell SQL Server backup otomasyonu, kurumsal ortamlarda SQL Server veritabanlarının düzenli, tutarlı ve geri yüklenebilir şekilde yedeklenmesini sağlayan en pratik yöntemlerden biridir. Özellikle birden fazla SQL Server instance bulunan yapılarda, PowerShell SQL Server backup yaklaşımı ile yedekleme sürecini script tabanlı ve merkezi yönetilebilir hale getirmek mümkündür.
PowerShell SQL Server backup yaklaşımıyla, tüm SQL yedekleme sürecini script tabanlı, sürüm kontrol edilebilir ve merkezi yönetilebilir hale getirmek mümkündür. Özellikle birden fazla SQL Server instance bulunan ortamlarda bu yaklaşım ciddi operasyonel avantaj sağlar.
Bu yazıda, tek script ile tüm SQL veritabanlarını yedekleyen, log tutan ve zamanlanabilir profesyonel bir PowerShell SQL Server backup otomasyonu hazırlayacağız.
Neden PowerShell tabanlı SQL yedekleme ?
Kurumsal ortamlarda SQL Server yedekleme stratejisi yalnızca “backup alınıyor mu?” sorusuyla sınırlı değildir. Asıl önemli olan; yedeklerin güvenli, izlenebilir, geri yüklenebilir ve standart olmasıdır.
SQL Server Agent job’ları zamanla aşağıdaki problemleri doğurabilir:
Job’ların GUI üzerinden yönetilmesi
Standart dışı yapılandırmalar
Versiyon kontrolünün zor olması
Hata ve log takibinin dağınık hale gelmesi
PowerShell SQL Server backup otomasyonu ile:
Tüm SQL Server’larda aynı script kullanılabilir
Değişiklikler Git ile versiyonlanabilir
Loglama merkezi hale gelir
Otomasyon süreçleri dokümante edilir
Neden SQL Server Agent Yerine PowerShell?
SQL Server Agent job’ları küçük ve tekil ortamlarda iş görse de, kurumsal yapılarda yönetimi zorlaşır. Farklı sunucularda farklı job’lar oluşur ve zamanla bu job’ların kim tarafından oluşturulduğu, ne amaçla çalıştığı belirsizleşir.
PowerShell tabanlı SQL Server backup yaklaşımı:
Taşınabilir
Okunabilir
Otomasyon sistemlerine entegre edilebilir
Bu sayede yedekleme süreci kişiye bağımlı olmaktan çıkar, kurumsal bir standarda dönüşür.
PowerShell ile SQL Server Yönetiminin Sağladığı Avantajlar
PowerShell SQL Server backup otomasyonu sayesinde:
Tüm veritabanlarını otomatik yedekleyebilirsiniz
Yedekleri tarih damgalı klasörlerde saklayabilirsiniz
Detaylı log dosyaları oluşturabilirsiniz
Windows Task Scheduler ile tamamen otomatik bir yapı kurabilirsiniz
Bu yapı özellikle lab, test ve küçük–orta ölçekli üretim ortamlarında son derece etkilidir.
Ön Gereksinimler
SQL Server yedekleme script’ini kullanmadan önce aşağıdaki bileşenlerin hazır olması gerekir:
PowerShell 5.1 veya üzeri
SQL Server Management Studio (SSMS) veya SMO bileşenleri
Yedeklerin yazılacağı yeterli disk alanı (örneğin
D:\SQLBackups)Script’i çalıştıran kullanıcının SQL Server üzerinde sysadmin yetkisine sahip olması
SMO nesnelerini kullanacağımız için aşağıdaki .NET assembly’leri yüklenecektir:
PowerShell ile SQL Server Backup Otomasyon Script’i

Aşağıdaki script:
Belirtilen SQL instance’a bağlanır
tempdbhariç tüm veritabanlarını FULL backup alırGünlük tarihli klasörler oluşturur
Her veritabanı için
.bakdosyası üretirLog dosyasına tüm işlemleri yazar
⚠️ Script aynen korunmuştur.
Bu script’i örneğin C:\Scripts\SqlFullBackup.ps1 olarak kaydedebilirsin.
Script Nasıl Çalışır? (Adım Adım)
Script çalıştığında önce tarih bazlı bir backup klasörü oluşturur. Ardından SMO nesneleri aracılığıyla SQL Server instance’a bağlanır ve sistem veritabanları hariç tüm veritabanlarını listeler.
Her veritabanı için ayrı bir .bak dosyası oluşturulur, checksum doğrulaması yapılır ve tüm işlemler log dosyasına yazılır. Bu yapı, hem manuel hem de zamanlanmış çalışmalarda sürecin izlenebilir olmasını sağlar.
PowerShell SQL Server Yedekleme Neden Her Senaryoda Yeterli Değildir?
PowerShell SQL Server backup script’leri güçlüdür ancak her üretim senaryosu için yeterli değildir.
Bu script örneğinde:
Backup dosyaları şifrelenmemektedir
Yedekler yalnızca local disk üzerinde tutulmaktadır
Ransomware, disk arızası veya silinme senaryolarına karşı ek koruma yoktur
Bu nedenle PowerShell SQL Server backup otomasyonu genellikle ilk katman çözüm olarak değerlendirilmelidir.
Sık Karşılaşılan PowerShell SQL Backup Hataları ve Çözümleri
Access Denied Hatası
Script’i çalıştıran kullanıcının SQL Server üzerinde sysadmin yetkisi kontrol edilmelidir.
Backup Device Failure
Yedek alınan diskte yeterli boş alan yoksa backup başarısız olur.
SMO Assembly Load Error
SMO bileşenleri yüklü değilse script çalışmaz. SSMS veya SQL Feature Pack kurulmalıdır.
Bu hataların log dosyasında tutulması, özellikle zamanlanmış görevlerde kritik öneme sahiptir.
PowerShell Script mi, Profesyonel SQL Backup Çözümü mü?
| Özellik | PowerShell Script | Profesyonel Çözüm |
|---|---|---|
| Encryption | ❌ | ✅ |
| Monitoring | ❌ | ✅ |
| Cloud / Offsite | ❌ | ✅ |
| Merkezi Yönetim | ❌ | ✅ |
PowerShell script’leri lab ve küçük ortamlar için idealdir. Ancak büyük ve kritik sistemlerde profesyonel SQL backup çözümleri tercih edilmelidir.
Zamanlanmış Görev ile Otomatik Çalıştırma
Script’i her gece saat 02:00’de çalıştırmak için:
Bu sayede PowerShell kullanarak SQL Server backup otomasyonu tamamen insan müdahalesi olmadan çalışır.
PowerShell tabanlı SQL yedekleme, SQL altyapısını daha standart, dokümante, versiyonlanabilir ve kolay yönetilebilir hale getirir. Script tabanlı yaklaşım, otomasyon kültürünü güçlendirir ve operasyonel hataları azaltır.
Ancak üretim ortamlarında güvenlik, izleme ve felaket kurtarma senaryoları mutlaka profesyonel çözümlerle desteklenmelidir. Bu script, sağlam bir temel sunarak SQL Server yönetiminde otomasyonun ilk adımını oluşturur.
PowerShell ve SQL Server yönetimi konusunda resmi ve güncel dokümantasyonlara erişmek, script tabanlı çözümlerin doğru ve güvenli şekilde uygulanması açısından önemlidir. Microsoft tarafından sağlanan resmi kaynaklar, PowerShell SQL Server backup senaryoları için referans niteliğindedir.

