Soru: Bilgisayar Çökünce Alınan SambaPOS SQL Yedeği (.bak) SSMS te Neden ‘Exclusive Access’ Hatası Verir ve Yüklenmez?
Cevap: Restoranlarda ana kasa bilgisayarı arızalandığında veya yeni bir bilgisayara geçildiğinde flash bellekteki güncel SambaPOS veritabanı yedeğinin (SAMBAPOS5.bak) Microsoft SQL Server Management Studio (SSMS) üzerinden geri yüklenmek (Restore Database) istendiğinde ekrana aniden kırmızı çarpıyla beliren ‘Restore failed for Server. System.Data.SqlClient.SqlError: The operating system returned error 5 (Access is denied) or The database is in use by another session (Exclusive access could not be obtained)’ uyarısı restoranın tüm geçmiş satış verilerini ve menü ayarlarını geri getirmesini kilitler. İşletme sahibi tüm bilgilerin silindiğini zanneder. Bu arıza yedeğin bozukluğu değil; SQL Server servisinin Windows klasör izinlerine takılması veya arka planda açık kalan SambaPOS istemcilerinin veritabanını meşgul tutarak SQL motorunun üzerine yazmayı engellemesidir.
SQL Server Restore Sürecinde ‘Exclusive Access’ ve İzin Fiziği
SQL Server bir veritabanını geri yüklerken veritabanı dosyalarını (MDF ve LDF) tamamen sıfırlar ve üzerine yazar:
- Tek Kullanıcı Zorunluluğu: Restore anında hedef veritabanına bağlı tek bir açık oturum dahi varsa işlem güvenlik gereği anında iptal edilir (Exclusive Access Hatası).
- Hata 5 (Erişim Engellendi): Kullanıcı
.bakdosyasını Windows ‘Masaüstü’ veya ‘İndirilenler’ klasörüne koyduğunda; arka planda bağımsız bir Windows kullanıcısı olarak çalışanNT ServiceMSSQLSERVERservis hesabı o kişisel klasörü okuma yetkisine sahip değildir ve ‘Erişim Reddedildi’ der.
1. Adım: .bak Dosyasını SQL Server’ın Kendi Güvenli ‘Backup’ Dizinine Taşıma
‘Erişim Engellendi (Access Denied – Error 5)’ hatasını anında yok etmek için:
- Flash bellekteki
SAMBAPOS5.bakdosyası masaüstüne DEĞİL; doğrudan SQL Server ın fabrikasyon tam yetkili klasörüne kopyalanır:
C:Program FilesMicrosoft SQL ServerMSSQL15.SQLEXPRESSMSSQLBackupBu klasör SQL Server ın kendi mülküdür; hiçbir Windows izin engeline takılmadan dosyayı anında okur.
2. Adım: Veritabanını ‘Tek Kullanıcı Moduna’ (Single User) Zorlama
Açık kalan arka plan bağlantılarını tek satırla öldürmek için SSMS te New Query açılarak şu T-SQL komutu çalıştırılır:
USE [master];
GO
-- Açık kalan el terminallerini ve SambaPOS oturumlarını anında kesin:
ALTER DATABASE [SAMBAPOS5] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GOBu komut veritabanını kullanan tüm hayalet bağlantıları milisaniyesinde kapatır ve kilidi açar.
3. Adım: ‘WITH REPLACE’ Parametresi ile Yedeği Kusursuz Üzerine Yazma
Komut satırından hatasız geri yükleme işletilir:
RESTORE DATABASE [SAMBAPOS5]
FROM DISK = 'C:Program FilesMicrosoft SQL ServerMSSQL15.SQLEXPRESSMSSQLBackupSAMBAPOS5.bak'
WITH REPLACE, RECOVERY;
GO
-- Veritabanını tekrar genel kullanıma açın:
ALTER DATABASE [SAMBAPOS5] SET MULTI_USER;
GOKomut çalıştığı anda ekrana ‘RESTORE DATABASE successfully processed’ onay mesajı gelir. SambaPOS açıldığında dünün tüm satışları, adisyonları, masa planı ve reçetelerinin kuruşu kuruşuna eksiksiz geri yüklendiği doğrulanır.
Restoran otomasyonu veri kurtarma, SambaPOS SQL veritabanı onarımları, sunucu göçü ve felaket kurtarma senaryolarında BaykalSoft Veritabanı Mühendisliği uzman kadromuzla iletişime geçebilirsiniz.