MS SQL Server 定時備援、還原

如果只是單純的備份,那 MS SQL Server 的 mmc 工具 Enterprise Manager 就可以簡單的達成任務。
不過要是需要將資料庫備份後還原到備援主機上,那步驟就會多一點,還好其實也沒複雜到哪裡去,只是需要使用動動你的手指頭打打幾個指令。

流程
1. 將資料庫備份
2. 備份檔案複製到還原主機上
3. 將備份資料庫還原

實作

環境說明:所有動作皆在備份端 (也就是負責備份的電腦) 完成

1. 建立 backup.sql
備份資料庫的 T-SQL 指令 c:\backup\backup.sql

BACKUP DATABASE database_name
TO DISK='e:\backup\hhdb.bak'
WITH FORMAT
GO

利用此 sql 指令將指定的資料庫備分到 TO DISK 指定的路徑、檔名

2. 建立 restore.sql
還原資料庫的 T-SQL 指令 c:\backup\restore.sql

USE master
GO
ALTER DATABASE hhdb SET single_user WITH rollback immediate
GO
RESTORE DATABASE hhdb FROM
DISK='c:\sql\hhdb.bak' WITH RECOVERY
GO
ALTER DATABASE db_name SET multi_user
GO

這裡的動作就是
1. 使用 ALTER DATABASE hhdb SET single_user WITH rollback immediate 將需要還原的資料庫設定成「單人模式」
2. 還原資料庫
3. 執行 ALTER DATABASE db_name SET multi_user 恢復資料庫正常運作

3. 建立 backup.bat
負責定時排成執行的批次檔 c:\backup\backup.bat

osql -S "dbserver" -U sa -P "password" -i c:\backup\backup.sql
copy \\192.168.1.2\E$\backup\hhdb.bak c:\sql\hhdb.bak
osql -S "192.168.1.4" -U sa -P "password" -i c:\backup\restore.sql
exit

 

排程設定...........

參考

osql 指令參數

osql              [-U login id]          [-P password]
  [-S server]            [-H hostname]          [-E trusted connection]
  [-d use database name] [-l login timeout]     [-t query timeout]
  [-h headers]           [-s colseparator]      [-w columnwidth]
  [-a packetsize]        [-e echo input]        [-I Enable Quoted Identifiers]
  [-L list servers]      [-c cmdend]            [-D ODBC DSN name]
  [-q "cmdline query"]   [-Q "cmdline query" and exit]
  [-n remove numbering]  [-m errorlevel]
  [-r msgs to stderr]    [-V severitylevel]
  [-i inputfile]         [-o outputfile]
  [-p print statistics]  [-b On error batch abort]
  [-O use Old ISQL behavior disables the following]
        batch processing
      Auto console width scaling
      Wide messages
      default errorlevel is -1 vs 1
  [-? show syntax summary]
arrow
arrow
    全站熱搜

    nan 發表在 痞客邦 留言(0) 人氣()