SQL Server yedek alma ve geri yükleme: adım adım
Bu rehberde SQL Server'da yedeğin nasıl alındığını ve, daha önemlisi, nasıl geri yüklendiğini anlatıyoruz. Management Studio ile adım adım ilerliyoruz, aynı işlerin T-SQL karşılıklarını veriyoruz ve en sık görülen hataların çözümlerini topluyoruz.
Üç yedek türü
SQL Server'da üç tür yedek vardır. Bunlar birbirini tamamlar:
- Tam yedek: Veritabanının o anki tamamı. Her geri yüklemenin başlangıç noktasıdır.
- Fark yedeği: Son tam yedekten bu yana değişen kısım. Tam yedekten küçüktür, geri yüklemeyi hızlandırır.
- İşlem günlüğü yedeği: Son işlem günlüğü yedeğinden bu yana yapılan bütün işlemler. Belirli bir dakikaya dönmeyi sağlar; yalnızca FULL kurtarma modelinde alınabilir.
Geri yükleme her zaman aynı sırayla yapılır: önce tam yedek, sonra en son fark yedeği, sonra işlem günlüğü yedekleri.
SSMS ile yedek alma
- Management Studio'da Object Explorer'da veritabanına sağ tıklayın.
- Tasks → Back Up… (Türkçe arayüzde Görevler → Yedekle) seçeneğini açın.
- Backup type alanından yedek türünü seçin: Full, Differential ya da Transaction Log.
- Destination bölümünde yedek dosyasının yolunu belirleyin.
- Media Options sayfasında Perform checksum before writing to media seçeneğini işaretleyin ve OK ile yedeği başlatın.
Aynı işlemlerin T-SQL karşılıkları:
T-SQL
-- Tam yedek
BACKUP DATABASE [Muhasebe] TO DISK = N'D:\Yedek\Muhasebe_tam.bak'
WITH CHECKSUM, INIT;
-- Fark yedeği
BACKUP DATABASE [Muhasebe] TO DISK = N'D:\Yedek\Muhasebe_fark.bak'
WITH DIFFERENTIAL, CHECKSUM, INIT;
-- İşlem günlüğü yedeği (yalnız FULL kurtarma modelinde)
BACKUP LOG [Muhasebe] TO DISK = N'D:\Yedek\Muhasebe_log_1015.trn'
WITH CHECKSUM, INIT;
Belirli bir ana geri yükleme
Diyelim ki saat 10:20'de yanlışlıkla bir tablo silindi ve veritabanını 10:15'teki hâline döndürmek istiyorsunuz. Zincir sırayla uygulanır; son adıma kadar veritabanı NORECOVERY ile "geri yükleniyor" durumunda bekler:
T-SQL
RESTORE DATABASE [Muhasebe_Kurtarma] FROM DISK = N'D:\Yedek\Muhasebe_tam.bak'
WITH MOVE N'Muhasebe' TO N'D:\Data\Muhasebe_Kurtarma.mdf',
MOVE N'Muhasebe_log' TO N'D:\Data\Muhasebe_Kurtarma_log.ldf',
NORECOVERY;
RESTORE DATABASE [Muhasebe_Kurtarma] FROM DISK = N'D:\Yedek\Muhasebe_fark.bak'
WITH NORECOVERY;
RESTORE LOG [Muhasebe_Kurtarma] FROM DISK = N'D:\Yedek\Muhasebe_log_1015.trn'
WITH STOPAT = N'2026-10-01 10:15:00', RECOVERY;
Örnekte veritabanı farklı bir adla (Muhasebe_Kurtarma) geri yükleniyor. Böylece çalışan veritabanına dokunmadan silinen veriyi kontrol edip geri alabilirsiniz. MOVE satırlarındaki mantıksal dosya adlarını şu komutla öğrenebilirsiniz:
T-SQL
RESTORE FILELISTONLY FROM DISK = N'D:\Yedek\Muhasebe_tam.bak';
Sık görülen hatalar ve çözümleri
- 3201: Cannot open backup device
- SQL Server yedek dosyasını kendi hizmet hesabıyla okur ve yazar. Klasöre bu hesabın erişimi olmalıdır. Eşlenmiş ağ sürücüsü harfleri hizmete görünmez;
\\sunucu\paylasimyolunu kullanın. - 3154: The backup set holds a backup of a database other than the existing database
- Yedeği başka bir veritabanının üzerine yüklemeye çalışıyorsunuz. Farklı bir adla geri yükleyin ya da emin olduğunuz durumda
WITH REPLACEkullanın;REPLACEvar olan veritabanını silip yerine yazar. - 3101: Exclusive access could not be obtained
- Veritabanını kullanan açık bağlantılar var. Geri yüklemeden önce uygulamaları kapatın ya da
ALTER DATABASE … SET SINGLE_USER WITH ROLLBACK IMMEDIATEile bağlantıları kesin. - 4305: The log in this backup set begins at LSN …, which is too recent
- İşlem günlüğü zincirinde bir halka eksik: aradaki bir günlük yedeği atlanmış ya da kaybolmuş. Eksik yedek bulunmadan o noktadan sonrasına dönülemez.
Yedek+ ile geri yükleme
Yukarıdaki zinciri elle kurmak, özellikle bir sorun anında, hata yapmaya açıktır: hangi dosyaların hangi sırayla uygulanacağını bulmak gerekir. Yedek+'ta dönmek istediğiniz anı seçersiniz; gereken tam, fark ve işlem günlüğü yedeklerini Yedek+ kendisi bulur ve sırasını gösterir.
Yedek+ ayrıca yedekleri düzenli olarak ayrı bir adla geri yükleyip test eder. Böylece bir gün yedeğe ihtiyacınız olduğunda zincirde eksik halka olmadığını önceden bilirsiniz.
Sık sorulan sorular
SQL Server yedeği nasıl geri yüklenir?
Management Studio'da Databases'a sağ tıklayıp Restore Database penceresini açın, yedek dosyasını seçin ve geri yükleyin. Belirli bir ana dönmek için önce tam yedek, sonra fark yedeği, sonra işlem günlüğü yedekleri sırayla uygulanır; son adımda STOPAT ile hedef zaman verilir.
Yedeği çalışan veritabanının üzerine mi yüklemeliyim?
Genellikle hayır. Önce farklı bir adla geri yükleyip veriyi kontrol etmek daha güvenlidir. Üzerine yazmak (WITH REPLACE) var olan veritabanını geri alınamayacak şekilde değiştirir.
RESTORE VERIFYONLY yedeğin sağlam olduğunu kanıtlar mı?
Tam olarak değil. VERIFYONLY yedek dosyasının okunabildiğini ve yapısının bütün olduğunu denetler; veritabanının geri yüklenip sorunsuz açılacağını göstermez. Bunun tek yolu yedeği gerçekten geri yüklemektir.