備忘錄_20160105(定位)
修改
回首頁
程式 2019-08-20 10:59:10 1566269950 100
定期備份資料庫
定期備份資料庫
運用 Windows 內建的排程,用系統管理員帳號密碼設定成不登入也執行的狀態。
【script.sql】
backup database databasename to disk=N'c:\backup_buffer\databasename.dat' with format
【backup.bat】
@echo off
cls
echo 刪除單機舊備份
del /f /q databasename.dat
echo 斷開網路磁碟機
net use z: /delete /yes
ping -n 5 127.0.0.1 > nul
echo 連上網路磁碟機
net use z: \\192.168.1.99\backupfolder password /user:username /persistent:no
ping -n 5 127.0.0.1 > nul
echo 備份資料庫
sqlcmd -U "username" -P "password" -S 192.168.1.66,1433 -d "databasename" -i "script.sql" -o "script.log"
for /F "tokens=1-4 delims=/ " %%i in ('date /t') do (
echo 更改檔名
ren databasename.dat %%l.dat
echo 刪除目的位置檔案
del /f /q z:\%%l.dat
echo 移動備份檔案
move /y %%l.dat z:\%%l.dat
)
echo 斷開網路磁碟機
net use z: /delete /yes
2020-07-09 追加
【工作排程器】
最高權限,
不登入也可執行dbMain_backup.bat,
起始位置 e:\backup (dbMain_backup.sql與dbMain_backup.bat的位置)
e:\backup\dayofweek (一星期的備份檔)
e:\backup\month (每個月的備份檔)
-------------------------
【dbMain_backup.sql】
use dbMain
go
alter database dbMain set recovery simple with no_wait
dbcc shrinkfile(dbMain_LOG1, 1)
dbcc shrinkfile(dbMain_LOG2, 1)
dbcc shrinkdatabase(dbMain, truncateonly)
alter database dbMain set recovery full with no_wait
go
backup database dbMain
to disk=N'e:\backup\dbMain.dat'
with format
go
-------------------------
【dbMain_backup.bat】
@echo off
cls
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "varDT=%%a"
for /f "tokens=2 delims==" %%a in ('wmic path win32_localtime get dayofweek /value') do set "varDOW=%%a"
set "varYYYY=%varDT:~0,4%"
set "varMM=%varDT:~4,2%"
set "varDD=%varDT:~6,2%"
set "varHour=%varDT:~8,2%"
set "varMin=%varDT:~10,2%"
set "varSec=%varDT:~12,2%"
set "strFN=dbMain-M%varMM%-DOW%varDOW%-%varYYYY%-%varMM%-%varDD%-%varHour%-%varMin%-%varSec%.dat"
set "strFN1=month\dbMain-M%varMM%-*.dat"
set "strFN2=dayofweek\dbMain-*-DOW%varDOW%-*.dat"
net use u: /delete /yes
ping -n 5 127.0.0.1 > nul
net use u: \\192.168.1.166\somewhere\database_backup "your_password" /user:your_username /persistent:no
ping -n 5 127.0.0.1 > nul
del /f /q dbMain.dat
sqlcmd -U "your_login_name" -P "your_login_password" -S 192.168.1.105,1601 -d "dbMain" -i "dbMain_backup.sql" -o "dbMain_backup.log"
ren dbMain.dat %strFN%
del /f /q %strFN1%
del /f /q %strFN2%
del /f /q u:\%strFN1%
del /f /q u:\%strFN2%
move %strFN% dayofweek
copy dayofweek\%strFN% month
copy dayofweek\%strFN% u:\month
copy dayofweek\%strFN% u:\dayofweek
net use u: /delete /yes