提示:批任務完成!
echo 提示:成功復制數據庫備份到遠程服務器\\192.168.244.24\DBback!
echo 按任意鍵結束退出!
echo --------------------------------------------------------------------------------
:exit
pause
echo 成功復制PersonnelM數據庫備份到遠程服務器\\192.168.244.24\1上!
Pause
利用Windows 任務計劃來調度批任務
1. 單擊“開始”—〉“程序”—〉“附件”—〉“系統工具”—〉“任務計劃”
2. 雙擊“新建任務計劃”,彈出“任務計劃向導”單擊“下一步”。在選擇任務窗體中選擇“瀏覽”。我們選擇要調度執行的Copy.bat文件。
3. 在接下來彈出的窗體中為我們的任務計劃起個名稱并且選擇執行頻率。這里我們選擇“每天”
4. 在密碼確認窗體中輸入本機的密碼。單擊“下一步”選擇“完成”。至此任務計劃設置完成。(有需要的話可以單擊選擇“在單擊完成時,打開此任務的高級屬性”復選框以便對此任務進行高級設置!)
方案四 同步備份服務器(腳本)
/*該部分參考了鄒建的腳本*/
/*--說明:
下面的代碼演示了如何利用日志還原功能,將主數據庫中的數據變化及時反饋到備用數據庫中
備用數據庫的數據可以隨時用于查詢,但不能被更新(備用數據庫只讀)。
--*/
--首先,創建一個演示用的數據庫(主數據庫)
CREATE DATABASE Db_test
ON
( NAME = Db_test_DATA,
FILENAME = 'c:\Db_test.mdf' )
LOG ON
( NAME = Db_test_LOG,
FILENAME = 'c:\Db_test.ldf')
GO
--對數據庫進行備份
BACKUP DATABASE Db_test TO DISK='c:\test_data.bak' WITH FORMAT
GO
--把數據庫還原成備用數據庫(演示主數據庫與這個備用數據庫之間的同步)
RESTORE DATABASE Db_test_bak FROM DISK='c:\test_data.bak'
WITH REPLACE,STANDBY='c:\db_test_bak.ldf'
,MOVE 'Db_test_DATA' TO 'c:\Db_test_data.mdf'
,MOVE 'Db_test_LOG' TO 'c:\Db_test_log.ldf'
GO
--啟動 SQL Agent 服務
EXEC master..xp_cmdshell '買粉絲 start sqlserveragent',no_output
GO
--創建主服務器數據訓與備用服務器數據庫之間同步的作業
DECLARE @jogid uniqueidentifier
EXEC msdb..sp_add_job
@job_id = @jogid OUTPUT,
@job_name = N'數據同步處理'
--創建同步處理步驟
EXEC msdb..sp_add_jobstep
@job_id = @jogid,
@step_name = N'數據同步',
@subsystem = 'TSQL',
@買粉絲mand = N''
--主數據庫中進行日志備份
BACKUP LOG Db_test TO DISK="c:\test_log.bak" WITH FORMAT
--備用數據庫中還原主數據庫的日志備份(應用主數據庫中的最新變化
--實際應該時主數據庫備份與備用數據庫的還原作業應該分別在主服務器和備用服務器上建立,并且備份文件應該放在主服務器和備用都能訪問的共享目錄中
RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak' WITH STANDBY='c:\test_log.ldf',
@retry_attempts = 5,
@retry_interval = 5
--創建調度(每分鐘執行一次)
EXEC msdb..sp_add_jobschele
@job_id = @jogid,
@name = N'時間安排',
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1
-- 添加目標服務器
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jogid,
@server_name = N'(local)'
GO
--通過上述處理,主數據庫與備用數據庫之間的同步關系已經設置完成
--下面開始測試是否能實現同步
--在主數據庫中創建一個測試用的表
CREATE TABLE Db_test.dbo.TB_test(ID int)
GO
--等待1分鐘30秒(由于同步的時間間隔設置為1分鐘,所以要延時才能看到效果)
WAITFOR DELAY '00:01:30'
GO
--查詢一下備用數據庫,看看同步是否成功
SELECT * FROM Db_test_bak.dbo.TB_test
/*--結果:
ID
-----------
(所影響的行數為 0 行)
--*/
--測試成功
GO
--最后刪除所有的測試
DROP DATABASE Db_test,Db_test_bak
EXEC msdb..sp_delete_job @job_name=N'數據同步處理'
GO
/*===========================================================*/
/*--服務器宕機處理說明
使用這種方式建立的數據庫同步,當主數據庫不可用時(例如,主數據庫損壞或者停機檢修)
可以使用以下兩種方法使備用數據庫可用。
--*/
--1. 如果主數據庫損壞,無法備份出最新的日志,可以直接使用下面的語句使備用數據庫可讀寫(丟失最近一次日志還原后的所有數據)。
RESTORE LOG Db_test_bak WITH RECOVERY
--2. 如果主數據庫可以備份出最新日志,則可以使用下面的語句。
--先備份主數據庫的最新的事務日志
BACKUP LOG Db_test TO DISK=''c:\test_log.bak'' WITH FORMAT
--再在備用數據庫中恢復最新的事務日志,并且使備用數據庫可讀寫(升級為主數據庫)
RESTORE LOG Db_test_bak FROM DISK='c:\test_log.bak'
方案五 復制訂閱
開始學習之前我們先搞清楚以下幾個概念:
復制(Replication)就是將數據由某處復制到一個或多個目的地,由于對數據庫分散式應用的需求日漸增加,SQL Sever也提供了復制的功能。
SQL Server 的復制功能基本上是使用“發布服務器(Publisher) ”和“訂閱服務器”(Subscriber)的結構,這整個結構中包含了數個不同的組件。
(1) 發布服務器(Publisher):在復制中,發布服務器就是負責發布數據庫內容給其他服務器的SQL Server (一般的我們把主服務器當作發布服務器,形象一點比喻發布服務器就好像是一本書的作者)
(2) 訂閱服務器(Subscriber):訂閱服務器就是指受發布服務器所發布數據的SQL SERVER,通常發布服務器只有一個,但訂閱服務器可以有多個。(形象比喻訂閱服務就像是讀者,購買相同圖書的讀者可以有很多。)
(3) 分發服務器(Distributor):除了發布服務器和訂閱服務器這兩個基本外,另一個可以由 SQL SERVER 在整個復制結構中扮演的角色就是分發服務器。分發服務器是負責將發布服務器所發布的數據庫發布、傳輸到各訂閱服務器的服務器。在簡單的復制結構中,發布服務器和分發服務器通常是使用同一個 SQL SERVER。設置為分發服務器的 SQL SERVER,會有個名為 distribution 的系統數據庫存放復制信息。
(4) 發布項(Article):發布服務器所發布的數據稱為發布項,發布項是進行復制時的復制單位,發布項可以是表或存儲過程等數據庫對象,也可以知識表中的某幾列或某幾項數據。
(5) 發布(Publish):一組特定的發布項組合就稱為發布,也就是 SQL SERVER進行復制時所復制的數據合。當訂閱服務器向發布服務器訂閱數據時,是以發布為單位,而不是以發布項為單位的。即,訂閱服務器只能接收整個發布中的所有 article。而不能只選擇其中幾個發布項類訂閱,每個發布只有來自單一數據庫的內容,但我們可以為數據庫設置多個發布。
(6) 為適應不同的復制需求,SQL SERVER提供了發送(Push)和請求(Pull)兩種不同的訂閱方式。區別如下:
(a) 發送訂閱(Push Subscription也稱為強制訂閱):所謂的發送訂閱就是由發布服務器主動傳送發布給訂閱服務器,也就是由發布服務器控制復制的操作,只要指定進行復制的時間一到,不管訂閱服務器有沒有提出要求,發布服務器都會將數據傳送給訂閱服務器。
(b) 請求訂閱(Pull Subscription):請求訂閱和發送訂閱相反,
2024-07-23 04:59
2024-07-23 04:25
2024-07-23 03:35
2024-07-23 03:11
2024-07-23 02:23
2024-07-23 02:22