dataiotech Labs
dbaguidedbaguideDBAdataxtoolsdataopsphere
Home/Hata Teşhis Kütüphanesi/sqlserver-3201-cannot-open-backup-device
SQL Server
SQL Server 2016–2022Yedekleme & Kurtarma
8 dk okuma
Msg 3201, Level 16: Cannot open backup device (Operating system error 5 / 3 / 112 / 32)

SQL Server Msg 3201 — Yedek Neden Yazamıyor?

3201 hatasında işletim sistemi hata kodlarını okuma, servis hesabının NTFS yetkisi, UNC yolu zorunluluğu ve yedek alanı planlaması.

İnceleyen:Principal Database Reliability Architect
Test Edilen Sürümler: SQL Server 2022 CU15 & 2019 CU28 (Windows Server 2022 / Docker 29.7)

Operasyonel Doğrulama & Güvenilirlik Standardı

Son Teknik İnceleme: 30 Ekim 2026
Test Edilen SürümlerSQL Server 2022 CU15 & 2019 CU28 (Windows Server 2022)
Gerekli YetkiSQL Server servis hesabının hedef dizinde NTFS Modify yetkisi; BACKUP DATABASE yetkisi
Risk Seviyesi
HighTest amacıyla WITH FORMAT kullanmak mevcut geçerli bir yedeğin üzerine yazarak veri kaybına yol açabilir
Beklenen ÇıktıRESTORE VERIFYONLY WITH CHECKSUM komutunun sıfır hata ile yedek dosyasını doğrulaması
Geri Dönüş (Rollback) Planı:sys.dm_server_services ile servis hesabını belirleyip NTFS Modify izni verme ve UNC yol standardı uygulama
Microsoft Docs: Backup Devices & OS Errors
İlk 60 Saniye Teşhis Protokolü:

Hata mesajı semptomdur, kök neden değildir. Sunucuyu yeniden başlatmadan veya rastgele ayar değiştirmeden önce aşağıdaki "Nedeni ayırt eden tek sorgu"yu çalıştırarak gerçek senaryoyu netleştirin.

▸Belirti

plaintext
Msg 3201, Level 16, State 1, Line 1 Cannot open backup device 'D:Backupapp_full.bak'. Operating system error 5(Access is denied.). Msg 3013, Level 16, State 1, Line 1 BACKUP DATABASE is terminating abnormally.

Mesajın ilk cümlesi standarttır; teşhisin tamamı işletim sistemi hata kodunda (Operating system error) gizlidir:

  • •Error 5 — Access is denied: SQL Server servis hesabının hedef klasör üzerinde NTFS yazma izni yoktur. En yaygın kök nedendir.
  • •Error 3 — The system cannot find the path specified: Belirtilen klasör yolu mevcut değildir. SQL Server kendiliğinden yeni klasör oluşturmaz.
  • •Error 112 — There is not enough space on the disk: Hedef disk biriminde yeterli boş alan kalmamıştır.
  • •Error 32 — The process cannot access the file because it is being used by another process: Dosya başka bir süreç tarafından kilitlenmiştir: Antivirüs gerçek zamanlı dosya taraması, üçüncü parti yedekleme ajanı veya çakışan başka bir SQL Server yedek oturumu.
NOT
Msg 3201 vs Msg 3202 Ayrımı: 3201 dosyanın açılamadığını (izin veya yol sorunu), 3202 ise dosya açıldıktan sonra yazma işleminin başarısız olduğunu (genellikle disk doluluğu veya donanım I/O hatası) ifade eder.

▸En Sık Yapılan Hata: Kendi Kullanıcı Hesabınızla Test Etmek

Bir DBA olarak uzak masaüstünden (RDP) sunucuya bağlanıp D:Backup klasörüne Windows Explorer ile dosya kopyalayabiliyorsanız, SQL Server'ın da yazabileceğini varsaymak yanıltıcıdır. BACKUP DATABASE komutu sizin Windows oturumunuzla değil, SQL Server Windows Servis Hesabıyla (Service Account) yürütülür!

Servis hesabının gerçekte kim olduğunu hemen sorgulayın:

sql
SELECT servicename, startup_type_desc, status_desc, service_account FROM sys.dm_server_services;

Çıktıda NT ServiceMSSQLSERVER, NT AUTHORITYSYSTEM veya özel bir Active Directory etki alanı hesabı (DOMAINsqlservice) görürsünüz. Hedef klasöre NTFS Modify yetkisini bu hesaba vermeniz gerekir.


▸Adım Adım Kalıcı Çözüm

1. Dosya Yolunu ve Klasör Varlığını Doğrulayın

Eğer işletim sistemi hatası (3) ise hedef dizin mevcut değildir:

sql
BACKUP DATABASE app TO DISK = 'D:Backupapp_full.bak' WITH COPY_ONLY, CHECKSUM;
İPUCU
Yedekleme yolunu ve izinlerini test ederken mutlaka `WITH COPY_ONLY` kullanın. Bu parametre, üretim diferansiyel (differential) ve işlem günlüğü (transaction log) LSN yedekleme zincirini bozmadan bağımsız bir deneme yedeği almanızı sağlar.

2. Servis Hesabına NTFS İzni Tanımlayın

Hedef klasörün özelliklerinden SQL Server servis hesabına Modify (Değiştirme) yetkisi verin. Full Control vermek güvenlik prensiplerine aykırıdır; Modify yetkisi dosya oluşturma, yazma ve silme için fazlasıyla yeterlidir.

3. Ağ Paylaşımlarında Eşlenmiş Sürücü Harfi (Z:) Kullanmayın!

Windows'ta eşlenmiş ağ sürücüleri (Z:Backup) oturum bazlıdır; SQL Server arka plan servis oturumunda bu sürücü harfleri görünmez. Ağ paylaşımlarına yedek alırken her zaman UNC yolu kullanın:

sql
BACKUP DATABASE app TO DISK = '\\depolama-nas\sql_backups\app_full.bak' WITH COPY_ONLY, COMPRESSION, CHECKSUM;

Ağ paylaşımında hem Paylaşım (Share) İzinleri hem de NTFS İzinleri katmanında servis hesabına yazma hakkı verilmelidir.

4. Kilitli Dosyaları İnceleyin (Error 32)

Çakışan bir yedekleme sürecinin aktif olup olmadığını sorgulayın:

sql
SELECT r.session_id, r.command, r.start_time, r.percent_complete, t.text AS calisan_sorgu FROM sys.dm_exec_requests r CROSS APPLY sys.dm_exec_sql_text(r.sql_handle) t WHERE r.command LIKE '%BACKUP%' OR r.command LIKE '%RESTORE%';

Ayrıca antivirüs yazılımlarının kurumsal veritabanı sunucularında .bak ve .trn uzantılarını tarama dışı (exclusion) bıraktığından emin olun.


▸Yedek Alındı ≠ Yedek Çalışıyor!

Yedek dosyasının diske başarıyla yazılması işlemin bittiği anlamına gelmez. Sayfa sağlama toplamı (checksum) doğrulamasını mutlaka çalıştırın:

sql
RESTORE VERIFYONLY FROM DISK = 'D:Backupapp_full.bak' WITH CHECKSUM;

Bu komut veriyi geri yüklemez; ancak yedeğin başlık bilgilerini ve veri sayfalarının bütünlüğünü doğrular.


▸İlgili Hata Rehberleri & Hub Bağlantıları

Diğer Veritabanı Hata Teşhisleri

Kriz anında başvurabileceğiniz diğer doğrulanmış hata rehberleri.

Tüm Hatalar (50)