7gün 24 saat çalışmayan işletmelerde MSSQL 2000 sunucusu durdurularak MDF ve LDF dosyalarının kopyalanması SQL’in BACKUP komutuna alternatif olarak kullanılabilir. Bu şekilde yedeklenen veritabanına geri dönülmesi için RESTORE ile geri yükleme yerine DETACH/ATTACH yaparak pratik geri yükleme yapılabilir.
Veritabanı dosyalarınızı tape/ZIP drive değilde CD-DVD’ye çekecekseniz dosya sıkıştırma programları ile sıkıştırabilirsiniz. Örneğimizde WINRAR programını kullandık.
WINRAR programı ile sıkıştırdığımız bilgiler herhangi bir şekilde başkasının eline geçebilirse diye bir uyarı mesajı ekleyebiliriz.
Bunun için aşağıdaki metinde x A.Ş. yazan yere firma ünvanınızı yazarak NOTEPAD’e kopyalayıp RARMESAJ.TXT adıyla SQL sunucusunun c:\windows\system32 dizinine kaydedin.
---------------------------------------------------
x A.Ş. - yedekleme-sıkıştırma
Burada yer alan yazılımların telif hakkı
üretici firmalarına ait olup, lisanslı
kullanım hakları x A.Ş.nindir.
İlgili yazılımlarda yer alan kayıtlar
x A.Ş.'nin mülkiyetinde olup
izin alınmadan çoğaltılamaz ve kullanılamaz.
Herhangi bir şekilde kayıtları izinsiz
alanlar hakkında yasal işlem yapılacaktır.
x A.Ş. - Bilgi İşlem Departmanı
Daha sonra aşağıdaki metni NOTEPAD’e kopyalayıp dosya türünde “Tüm dosyalar”ı seçerek BackupFullDB.VBS adıyla SQL sunucusunun c:\windows\system32 dizinine kaydedin.
Option Explicit
On Error Resume Next
'--- Burda yer alan yolu yedek dizinizie gore ayarlayın
Const BACKUP_REC_PATH="F:\BACKUP\RAR\"
Const WAIT_ON_RETURN = TRUE
Const SHOW_WINDOW = 1
Dim wshShell, strWeekday, strCmd, quote, strParam1,mesaj
Dim intResult
Dim wshFS, f , klasor
Dim Counter , Backup_File_Path, Backup_File(10), Backup_Time
Set wshShell = WScript.CreateObject("WScript.Shell")
Set wshFS = CreateObject("Scripting.FileSystemObject")
function Yil()
Yil=YEAR(NOW)
end function
function Ay()
Ay=MONTH(NOW)
If Ay<10 then Ay="0"&Ay
end function
function Gun()
Gun=DAY(NOW)
If Gun<10 then Gun="0"&Gun
end function
function Saat()
Saat=HOUR(NOW)
If Saat<10 then Saat="0"&Saat
end function
function Dakika()
Dakika=MINUTE(NOW)
If Dakika<10 then Dakika="0"&Dakika
end function
function Saniye()
Saniye=SECOND(NOW)
If Saniye<10 then Saniye="0"&Saniye
end function
'--- Netsis veritabanlarının tutulduğu dizin, kendi ticari programınıza göre ayarlayın
'-- örn Mikro v12 için için F:\Mikro\v12xx\SIRKET1
Backup_File_Path="F:\NETSIS\FUSIONST\DataBase\"
Backup_File(1)="SIRKET1"
Backup_File(2)="SIRKET2"
Backup_File(3)="SIRKET3"
Backup_File(4)="SIRKET4"
Backup_File(5)="SIRKET5"
Backup_File(6)="SIRKET6"
Backup_File(7)="SIRKET7"
Backup_File(8)="SIRKET8"
Backup_File(9)="SIRKET9"
Backup_File(10)="SIRKET10"
quote = CHR(34)
' --- Netsis kullanıcı servisi açık ise SQLSrv kapanması engellenebiliyor veya gecikebiliyor ---
strCmd = "NET STOP " & quote & "Netsis Kullanici Servisi 3.0" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
strCmd = "NET STOP " & quote & "SQLSERVERAGENT" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
strCmd = "NET STOP " & quote & "MSSQLSERVER" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
klasor=BACKUP_REC_PATH & Yil() & Ay() & Gun()
Set f= wshFS.CreateFolder(klasor)
'--- sayac degeri 10 Backup_File ile verilen ayrı ayrı yedeklenecek sirket sayısı
FOR Counter=1 TO 10
Backup_Time = Yil() & Ay() & Gun() & "_" & Saat() & Dakika()
strCmd = "WINRAR A -r -t -o+ -zc:\windows\system32\rarmesaj.txt " & klasor & "\" & _ Backup_File(Counter) & "_" & Backup_Time & ".RAR " & Backup_File_Path & _ Backup_File(Counter) & "*.*"
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
NEXT
strCmd = "NET START " & quote & "MSSQLSERVER" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
strCmd = "NET START " & quote & "SQLSERVERAGENT" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
strCmd = "NET START " & quote & "Netsis Kullanici Servisi 3.0" & quote
Return = wshShell.Run (strCmd,5,WAIT_ON_RETURN)
Backup_Time = Yil() & "-" & Ay() & "-" & Gun() & "_" & Saat() & ":" & Dakika() & ":" &_
Dakika()
'--- xxx yerine etki alanı adınızı yazınız ----
wshShell.run "NET SEND /DOMAIN:xxx SQL Servisimiz tekrar hizmete girmiştir. " & _
"Programlarınızı çalıştırabilirsiniz. " & Backup_Time
Yukarıdaki metinde (BackupFullDB.VBS) sonunda alt cizgi olan satırlara dikkat edelim. Visual Basic Script’de satırın devamı metne sığmazsa alt çizgi ( _ ) karakteri kullanılarak alt satırdan devam edilir.
Son olarak SQL sunucumuzda Zamanlanmış görevlere hazırladığımız yedekleme scriptini ekleyelim. Zamanlanmış görevlerden Dosya à Yeni à Zamanlanmış görev diyerek

Gelen yeni görevin adına “BackupFullDB” diyelim.
Çalıştır kısmına C:\windows\system32\BackupFullDB.vbs yazalım.

Zamanlama kısmına SQL sunucumuzun çalışmayacağı bir saati yazalım.

Ayarlar kısmında ise “Görevi 72 saat çalıştıktan sonra durdur” yazan kutucuğu boşaltalım ve böylece görevi sınırlamayalım.

Buraya kadar herşey yolunda gittiyse ve VBS dosyamızın çalışması engelenmedi ise (VBS dosyasının antivirus tarafından engellenmesi vb) yedekleme işlemimiz çalışacaktır. Yedek işleminden sonra yedek dizinimize baktığımızda aşağıdaki gibi yedekleme dizinimizin VBS dosyamız tarafından açıldığını görürüz.

Yedek dizinimizin içinin görünümü ise bu şekildedir.

Yedeklenen dosyamızı WINRAR ile açtığımızda aşağıdaki uayarı metnini (RARMESAJ.TXT) görürüz.

Çözülemeyecek bir teknik sorun yoktur. Mesele çözümün maliyetindedir.