sqlserver 2000數(shù)據(jù)庫(kù)同步 同步兩個(gè)SQLServer數(shù)據(jù)庫(kù)的內(nèi)容
發(fā)布日期:2022-01-29 13:08 | 文章來(lái)源:站長(zhǎng)之家
1.發(fā)布服務(wù)器,訂閱服務(wù)器都創(chuàng)建一個(gè)同名的windows用戶,并設(shè)置相同的密碼,做為發(fā)布快照文件夾的有效訪問(wèn)用戶
我的電腦
控制面板
管理工具
計(jì)算機(jī)管理
用戶和組
右鍵用戶
新建用戶
建立一個(gè)隸屬于administrator組的登陸windows的用戶 2.在發(fā)布服務(wù)器上,新建一個(gè)共享目錄,做為發(fā)布的快照文件的存放目錄,操作: 我的電腦
D:\ 新建一個(gè)目錄,名為: PUB
右鍵這個(gè)新建的目錄
屬性 共享
選擇"共享該文件夾"
通過(guò)"權(quán)限"按紐來(lái)設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限
確定
3.設(shè)置SQL代理(SQLSERVERAGENT)服務(wù)的啟動(dòng)用戶(發(fā)布/訂閱服務(wù)器均做此設(shè)置) 開(kāi)始 程序 管理工具 服務(wù)
右鍵SQLSERVERAGENT
屬性 登陸 選擇"此賬戶"
輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名
"密碼"中輸入該用戶的密碼 4.設(shè)置SQL Server身份驗(yàn)證模式,解決連接時(shí)的權(quán)限問(wèn)題(發(fā)布/訂閱服務(wù)器均做此設(shè)置) 企業(yè)管理器
右鍵SQL實(shí)例 屬性
安全性 身份驗(yàn)證
選擇"SQL Server 和 Windows"
確定 5.在發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊(cè)
企業(yè)管理器
右鍵SQL Server組
新建SQL Server注冊(cè)...
下一步 可用的服務(wù)器中,輸入你要注冊(cè)的遠(yuǎn)程服務(wù)器名 添加
下一步 連接使用,選擇第二個(gè)"SQL Server身份驗(yàn)證"
下一步 輸入用戶名和密碼
下一步 選擇SQL Server組,也可以創(chuàng)建一個(gè)新組
下一步 完成 6.對(duì)于只能用IP,不能用計(jì)算機(jī)名的,為其注冊(cè)服務(wù)器別名
(在連接端配置,比如,在訂閱服務(wù)器上配置的話,服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的IP)
開(kāi)始 程序 Microsoft SQL Server 客戶端網(wǎng)絡(luò)實(shí)用工具
別名 添加
網(wǎng)絡(luò)庫(kù)選擇"tcp/ip" 服務(wù)器別名輸入SQL服務(wù)器名
連接參數(shù) 服務(wù)器名稱中輸入SQL服務(wù)器ip地址
如果你修改了SQL的端口,取消選擇"動(dòng)態(tài)決定端口",并輸入對(duì)應(yīng)的端口號(hào)
SQL數(shù)據(jù)庫(kù)同步復(fù)制 一、建立發(fā)布和分發(fā)服務(wù)器 [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器] ->[使"@servername"成為它自己的分發(fā)服務(wù)器,SQL Server將創(chuàng)建分發(fā)數(shù)據(jù)庫(kù)和日志] ->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認(rèn)配置] -> [完成] 上述步驟完成后, 會(huì)在當(dāng)前"@servername" SQL Server數(shù)據(jù)庫(kù)里建立了一個(gè)distribion庫(kù)和 一個(gè)distributor_admin管理員級(jí)別的用戶(我們可以任意修改密碼) 服務(wù)器上新增加了四個(gè)作業(yè):
[ 代理程序歷史記錄清除: distribution ]
[ 分發(fā)清除: distribution ]
[ 復(fù)制代理程序檢查 ]
[ 重新初始化存在數(shù)據(jù)驗(yàn)證失敗的訂閱 ] SQL Server企業(yè)管理器里多了一個(gè)復(fù)制監(jiān)視器, 當(dāng)前的這臺(tái)機(jī)器就可以發(fā)布、分發(fā)、訂閱了。 我們?cè)俅卧赟QL Server企業(yè)管理器里[復(fù)制]-> 右鍵選擇
->[配置發(fā)布、訂閱服務(wù)器和分發(fā)],可以看到類似下圖: 我們可以在 [發(fā)布服務(wù)器和分發(fā)服務(wù)器的屬性] 窗口
-> [發(fā)布服務(wù)器] -> [新增] -> [確定]
-> [發(fā)布數(shù)據(jù)庫(kù)] -> [事務(wù)]/[合并] -> [確定]
-> [訂閱服務(wù)器] -> [新增] -> [確定]
把網(wǎng)絡(luò)上的其它SQL Server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.
新增一臺(tái)發(fā)布服務(wù)器的選項(xiàng): 我這里新建立的JIN001發(fā)布服務(wù)器是用管理員級(jí)別的數(shù)據(jù)庫(kù)用戶test連接的,
到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,
在新建的JIN001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器FENGYU/FENGYU的鏈接的時(shí)需要輸入distributor_admin用戶的密碼
到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,
也就是不需要密碼來(lái)建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測(cè)試環(huán)境下可以使用) 二、新建立的網(wǎng)絡(luò)上另一臺(tái)發(fā)布服務(wù)器(例如JIN001)選擇分發(fā)服務(wù)器 [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器] -> 使用下列服務(wù)器(選定的服務(wù)器必須已配置為分發(fā)服務(wù)器) -> [選定服務(wù)器](例如FENGYU/FENGYU) -> [下一步] -> [輸入分發(fā)服務(wù)器(例如FENGYU/FENGYU)的distributor_admin用戶的密碼兩次] -> [下一步] -> [自定義配置] -> [否,使用下列的默認(rèn)配置] -> [下一步] -> [完成] -> [確定] 建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制發(fā)布的過(guò)程: [復(fù)制] -> [發(fā)布內(nèi)容] -> 右鍵選擇 -> [新建發(fā)布] -> [下一步] -> [選擇發(fā)布數(shù)據(jù)庫(kù)] -> [選中一個(gè)待發(fā)布的數(shù)據(jù)庫(kù)] -> [下一步] -> [選擇發(fā)布類型] -> [事務(wù)發(fā)布]/[合并發(fā)布]
-> [下一步] -> [指定訂閱服務(wù)器的類型] -> [運(yùn)行SQL Server 2000的服務(wù)器] -> [下一步] -> [指定項(xiàng)目] -> [在事務(wù)發(fā)布中只可以發(fā)布帶主鍵的表] -> [選中一個(gè)有主鍵的待發(fā)布的表] ->[在合并發(fā)布中會(huì)給表增加唯一性索引和 ROWGUIDCOL 屬性的唯一標(biāo)識(shí)符字段[rowguid],默認(rèn)值是newid()] (添加新列將: 導(dǎo)致不帶列列表的 INSERT 語(yǔ)句失敗,增加表的大小,增加生成第一個(gè)快照所要求的時(shí)間) ->[選中一個(gè)待發(fā)布的表] -> [下一步] -> [選擇發(fā)布名稱和描述] -> -> [下一步] -> [自定義發(fā)布的屬性] -> [否,根據(jù)指定方式創(chuàng)建發(fā)布] -> [下一步] -> [完成] -> [關(guān)閉] 發(fā)布屬性里有很多有用的選項(xiàng):設(shè)定訂閱到期(例如24小時(shí)) 設(shè)定發(fā)布表的項(xiàng)目屬性: 常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來(lái)的表名稱不一樣。 下圖是命令和快照窗口的欄目 ( SQL Server 數(shù)據(jù)庫(kù)復(fù)制技術(shù)實(shí)際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作 看文檔資料需要把發(fā)布數(shù)據(jù)庫(kù)設(shè)成完全恢復(fù)模式,事務(wù)才不會(huì)丟失 但我自己在測(cè)試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫(kù)是簡(jiǎn)單恢復(fù)模式下,每10秒生成一些大事務(wù),10分鐘后再收縮數(shù)據(jù)庫(kù)日志,
這期間發(fā)布和訂閱服務(wù)器上的作業(yè)都暫停,暫?;謴?fù)后并沒(méi)有丟失任何事務(wù)更改 ) 發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列: 例如只選擇表里某些符合條件的記錄, 我們可以手工編寫(xiě)篩選的SQL語(yǔ)句: 發(fā)布表的訂閱選項(xiàng),并可以建立強(qiáng)制訂閱:
成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個(gè)作業(yè): [ 失效訂閱清除 ] 分發(fā)服務(wù)器上新增加了兩個(gè)作業(yè):
[ JIN001-dack-dack-5 ] 類型[ REPL快照 ]
[ JIN001-dack-3 ] 類型[ REPL日志讀取器 ] 上面藍(lán)色字的名稱會(huì)根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號(hào) REPL快照作業(yè)是SQL Server復(fù)制的前提條件,它會(huì)先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的OS目錄下文件
(當(dāng)有訂閱的時(shí)候才會(huì)生成, 當(dāng)訂閱請(qǐng)求初始化或者按照某個(gè)時(shí)間表調(diào)度生成) REPL日志讀取器在事務(wù)復(fù)制的時(shí)候是一直處于運(yùn)行狀態(tài)。(在合并復(fù)制的時(shí)候可以根據(jù)調(diào)度的時(shí)間表來(lái)運(yùn)行) 建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制訂閱的過(guò)程: [復(fù)制] -> [訂閱] -> 右鍵選擇 -> [新建請(qǐng)求訂閱] -> [下一步] -> [查找發(fā)布] -> [查看已注冊(cè)服務(wù)器所做的發(fā)布] -> [下一步] -> [選擇發(fā)布] -> [選中已經(jīng)建立發(fā)布服務(wù)器上的數(shù)據(jù)庫(kù)發(fā)布名] -> [下一步] -> [指定同步代理程序登錄](méi) -> [當(dāng)代理程序連接到代理服務(wù)器時(shí):使用SQL Server身份驗(yàn)證]
(輸入發(fā)布服務(wù)器上distributor_admin用戶名和密碼) -> [下一步] -> [選擇目的數(shù)據(jù)庫(kù)] -> [選擇在其中創(chuàng)建訂閱的數(shù)據(jù)庫(kù)名]/[也可以新建一個(gè)庫(kù)名] -> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱] -> [下一步] -> [初始化訂閱] -> [是,初始化架構(gòu)和數(shù)據(jù)] -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件]
(訂閱服務(wù)器要能訪問(wèn)發(fā)布服務(wù)器的REPLDATA文件夾,如果有問(wèn)題,可以手工設(shè)置網(wǎng)絡(luò)共享及共享權(quán)限) -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件] -> [下一步] -> [設(shè)置分發(fā)代理程序調(diào)度] -> [使用下列調(diào)度] -> [更改] -> [例如每五分鐘調(diào)度一次] -> [下一步] -> [啟動(dòng)要求的服務(wù)] -> [該訂閱要求在發(fā)布服務(wù)器上運(yùn)行SQLServerAgent服務(wù)] -> [下一步] -> [完成] -> [確定] 成功建立了訂閱后,訂閱服務(wù)器上新增加了一個(gè)類別是[REPL-分發(fā)]作業(yè)(合并復(fù)制的時(shí)候類別是[REPL-合并])
它會(huì)按照我們給的時(shí)間調(diào)度表運(yùn)行數(shù)據(jù)庫(kù)同步復(fù)制的作業(yè) 三、SQL Server復(fù)制配置好后, 可能出現(xiàn)異常情況的實(shí)驗(yàn)日志: 1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制沒(méi)有多大影響 中斷期間,分發(fā)和訂閱都接收到?jīng)]有復(fù)制的事務(wù)信息 2.分發(fā)服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制有一些影響 中斷期間,發(fā)布服務(wù)器的事務(wù)排隊(duì)堆積起來(lái)
(如果設(shè)置了較長(zhǎng)時(shí)間才刪除過(guò)期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫(kù)的事務(wù)日志可能會(huì)較快速膨脹), 訂閱服務(wù)器會(huì)因?yàn)樵L問(wèn)不到發(fā)布服務(wù)器,反復(fù)重試
我們可以設(shè)置重試次數(shù)和重試的時(shí)間間隔(最大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯(cuò)) 分發(fā)服務(wù)器sql server服務(wù)啟動(dòng),網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上: 會(huì)需要一個(gè)比較長(zhǎng)的時(shí)間(實(shí)際上是生成所有事務(wù)的insert,update,delete語(yǔ)句,在訂閱服務(wù)器上去執(zhí)行)
我們?cè)谄胀ǖ腜C機(jī)上實(shí)驗(yàn)的58個(gè)事務(wù)100228個(gè)命令執(zhí)行花了7分28秒. 3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化 我們實(shí)驗(yàn)環(huán)境(訂閱服務(wù)器)從18:46分意外停機(jī)以, 第二天8:40分重啟動(dòng)后,
已經(jīng)設(shè)好的復(fù)制在8:40分以后又開(kāi)始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上
但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).
(我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒(méi)有進(jìn)行快照初試化,復(fù)制仍然是成功運(yùn)行的) 四、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕 我們最好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來(lái)操作。 如果要徹底刪去SQL Server上面的復(fù)制設(shè)置, 可以這樣操作: [復(fù)制] -> 右鍵選擇 [禁用發(fā)布] -> [歡迎使用禁用發(fā)布和分發(fā)向?qū) -> [下一步] -> [禁用發(fā)布] -> [要在"@servername"上禁用發(fā)布] -> [下一步] -> [完成禁用發(fā)布和分發(fā)向?qū) -> [完成] 我們也可以用T-SQL命令來(lái)完成復(fù)制中發(fā)布及訂閱的創(chuàng)建和刪除, 選中已經(jīng)設(shè)好的發(fā)布和訂閱, 按屬標(biāo)右鍵
可以[生成SQL腳本]。(這里就不詳細(xì)講了, 后面推薦的網(wǎng)站內(nèi)有比較詳細(xì)的內(nèi)容) 當(dāng)你試圖刪除或者變更一個(gè)table時(shí),出現(xiàn)以下錯(cuò)誤
Server: Msg 3724, Level 16, State 2, Line 1
Cannot drop the table object_name because it is being used for replication. 比較典型的情況是該table曾經(jīng)用于復(fù)制,但是后來(lái)又刪除了復(fù)制 處理辦法:
select * from sysobjects where replinfo >0
sp_configure allow updates, 1
go
reconfigure with override
go
begin transaction
update sysobjects set replinfo = 0 where replinfo >0
commit transaction
go
rollback transaction
go
sp_configure allow updates, 0
go
reconfigure with override
go
疑問(wèn):
在合并復(fù)制配置完全后,如果同步代理停止了。我要在程序中去重新啟動(dòng)合并復(fù)制的同步代理。請(qǐng)問(wèn)使用什么命令或存儲(chǔ)過(guò)程呢?
解決辦法:
sp_start_job
指示 SQL Server 代理程序立即執(zhí)行作業(yè)。 示例
下例啟動(dòng)名為 Nightly Backup 的作業(yè)。 USE msdb
EXEC sp_start_job @job_name = Nightly Backup
2、日志還原功能、、、
說(shuō)明:
下面的代碼演示了如何利用日志還原功能,將主數(shù)據(jù)庫(kù)中的數(shù)據(jù)變化及時(shí)反饋到備用數(shù)據(jù)庫(kù)中
備用數(shù)據(jù)庫(kù)的數(shù)據(jù)可以隨時(shí)用于查詢,但不能被更新(備用數(shù)據(jù)庫(kù)只讀)。 首先,創(chuàng)建一個(gè)演示用的數(shù)據(jù)庫(kù)(主數(shù)據(jù)庫(kù))
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 對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份
BACKUP DATABASE Db_test TO DISK=c:\test_data.bak WITH FORMAT
GO 把數(shù)據(jù)庫(kù)還原成備用數(shù)據(jù)庫(kù)(演示主數(shù)據(jù)庫(kù)與這個(gè)備用數(shù)據(jù)庫(kù)之間的同步)
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 啟動(dòng) SQL Agent 服務(wù)
EXEC master..xp_cmdshell net start sqlserveragent,no_output
GO 創(chuàng)建主服務(wù)器數(shù)據(jù)訓(xùn)與備用服務(wù)器數(shù)據(jù)庫(kù)之間同步的作業(yè)
DECLARE @jogid uniqueidentifier
EXEC msdb..sp_add_job
@job_id = @jogid OUTPUT,
@job_name = N數(shù)據(jù)同步處理 創(chuàng)建同步處理步驟
EXEC msdb..sp_add_jobstep
@job_id = @jogid,
@step_name = N數(shù)據(jù)同步,
@subsystem = TSQL,
@command = N
主數(shù)據(jù)庫(kù)中進(jìn)行日志備份
BACKUP LOG Db_test TO DISK=c:\test_log.bak WITH FORMAT 備用數(shù)據(jù)庫(kù)中還原主數(shù)據(jù)庫(kù)的日志備份(應(yīng)用主數(shù)據(jù)庫(kù)中的最新變化
實(shí)際應(yīng)該時(shí)主數(shù)據(jù)庫(kù)備份與備用數(shù)據(jù)庫(kù)的還原作業(yè)應(yīng)該分別在主服務(wù)器和備用服務(wù)器上建立,并且備份文件應(yīng)該放在主服務(wù)器和備用都能訪問(wèn)的共享目錄中
RESTORE LOG Db_test_bak FROM DISK=c:\test_log.bak WITH STANDBY=c:\test_log.ldf,
@retry_attempts = 5,
@retry_interval = 5 創(chuàng)建調(diào)度(每分鐘執(zhí)行一次)
EXEC msdb..sp_add_jobschedule
@job_id = @jogid,
@name = N時(shí)間安排,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1 添加目標(biāo)服務(wù)器
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jogid,
@server_name = N(local)
GO 通過(guò)上述處理,主數(shù)據(jù)庫(kù)與備用數(shù)據(jù)庫(kù)之間的同步關(guān)系已經(jīng)設(shè)置完成
下面開(kāi)始測(cè)試是否能實(shí)現(xiàn)同步 在主數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)測(cè)試用的表
CREATE TABLE Db_test.dbo.TB_test(ID int)
GO 等待1分鐘30秒(由于同步的時(shí)間間隔設(shè)置為1分鐘,所以要延時(shí)才能看到效果)
WAITFOR DELAY 00:01:30
GO 查詢一下備用數(shù)據(jù)庫(kù),看看同步是否成功
SELECT * FROM Db_test_bak.dbo.TB_test 結(jié)果:
ID
- (所影響的行數(shù)為 0 行)
測(cè)試成功
GO 最后刪除所有的測(cè)試
DROP DATABASE Db_test,Db_test_bak
EXEC msdb..sp_delete_job @job_name=N數(shù)據(jù)同步處理
GO
=========================================================== 服務(wù)器檔機(jī)處理說(shuō)明
使用這種方式建立的數(shù)據(jù)庫(kù)同步,當(dāng)主數(shù)據(jù)庫(kù)不可用時(shí)(例如,主數(shù)據(jù)庫(kù)損壞或者停機(jī)檢修)
可以使用以下兩種方法使備用數(shù)據(jù)庫(kù)可用。
1. 如果主數(shù)據(jù)庫(kù)損壞,無(wú)法備份出最新的日志,可以直接使用下面的語(yǔ)句使備用數(shù)據(jù)庫(kù)可讀寫(xiě)(丟失最近一次日志還原后的所有數(shù)據(jù))。
RESTORE LOG Db_test_bak WITH RECOVERY
2. 如果主數(shù)據(jù)庫(kù)可以備份出最新日志,則可以使用下面的語(yǔ)句。
先備份主數(shù)據(jù)庫(kù)的最新的事務(wù)日志
BACKUP LOG Db_test TO DISK=c:\test_log.bak WITH FORMAT
再在備用數(shù)據(jù)庫(kù)中恢復(fù)最新的事務(wù)日志,并且使備用數(shù)據(jù)庫(kù)可讀寫(xiě)(升級(jí)為主數(shù)據(jù)庫(kù))
RESTORE LOG Db_test_bak FROM DISK=c:\test_log.bak 簡(jiǎn)單地說(shuō):
1. 你的sql服務(wù)要使用指定的windows用戶登陸, 而不能使用"本地系統(tǒng)帳戶"
2. 用于登陸sql服務(wù)的用戶要求對(duì)共享目錄具有所有權(quán)限
3. 如果你的電腦沒(méi)有加入到域, 還必須保證源和目標(biāo)服務(wù)器的sql服務(wù)設(shè)置的登陸用戶是一樣的(用戶名和密碼都一樣) 網(wǎng)絡(luò)備份主要是權(quán)限設(shè)置問(wèn)題, 參考下面的備份文件共享目錄權(quán)限設(shè)置方法去解決目錄的共享權(quán)限就可以了 下面假設(shè)是假設(shè)A服務(wù)器上的數(shù)據(jù)庫(kù)備份到B服務(wù)器上的共享目錄權(quán)限設(shè)置(兩臺(tái)服務(wù)器應(yīng)該在局域網(wǎng)內(nèi),允許目錄共享訪問(wèn)):: 1.機(jī)器A,B創(chuàng)建一個(gè)同名的windows用戶,用戶組設(shè)置為administrators,并設(shè)置相同的密碼,做為備份文件夾文件夾的有效訪問(wèn)用戶,操作:
我的電腦
控制面板
管理工具
計(jì)算機(jī)管理
用戶和組
右鍵用戶
新建用戶
建立一個(gè)隸屬于administrator組的登陸windows的用戶 2.在B機(jī)器器上,新建一個(gè)共享目錄,做為備份文件的存放目錄,操作:
我的電腦D:\ 新建一個(gè)目錄,名為: BAK
右鍵這個(gè)新建的目錄
屬性共享
選擇"共享該文件夾"
通過(guò)"權(quán)限"按紐來(lái)設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限
確定
3.設(shè)置 MSSQLSERVER 及 SQLSERVERAGENT 服務(wù)的啟動(dòng)用戶
開(kāi)始程序管理工具服務(wù)
右鍵 MSSQLSERVER
屬性登陸選擇"此賬戶"
輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名
"密碼"中輸入該用戶的密碼
確定
同樣的方法設(shè)置 SQLSERVERAGENT 4.在A機(jī)器上完成對(duì)B機(jī)器BAK目錄的映射 5.查詢分析器中執(zhí)行下面的語(yǔ)句,檢驗(yàn)是否成功:
exec master..xp_cmdshell dir 映射的盤符 6.A服務(wù)器上做備份計(jì)劃 備注:創(chuàng)建一個(gè)新的用戶只是為了讓MSSQLSERVER服務(wù)的啟動(dòng)帳戶與共享目錄的有效訪問(wèn)同名且密碼相同,這樣才能通過(guò)驗(yàn)證(所以你也可以用其他有效的用戶來(lái)代替,只需要滿足用戶名和密碼相同,并且擁有足夠的權(quán)限)
我的電腦
控制面板
管理工具
計(jì)算機(jī)管理
用戶和組
右鍵用戶
新建用戶
建立一個(gè)隸屬于administrator組的登陸windows的用戶 2.在發(fā)布服務(wù)器上,新建一個(gè)共享目錄,做為發(fā)布的快照文件的存放目錄,操作: 我的電腦
D:\ 新建一個(gè)目錄,名為: PUB
右鍵這個(gè)新建的目錄
屬性 共享
選擇"共享該文件夾"
通過(guò)"權(quán)限"按紐來(lái)設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限
確定
3.設(shè)置SQL代理(SQLSERVERAGENT)服務(wù)的啟動(dòng)用戶(發(fā)布/訂閱服務(wù)器均做此設(shè)置) 開(kāi)始 程序 管理工具 服務(wù)
右鍵SQLSERVERAGENT
屬性 登陸 選擇"此賬戶"
輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名
"密碼"中輸入該用戶的密碼 4.設(shè)置SQL Server身份驗(yàn)證模式,解決連接時(shí)的權(quán)限問(wèn)題(發(fā)布/訂閱服務(wù)器均做此設(shè)置) 企業(yè)管理器
右鍵SQL實(shí)例 屬性
安全性 身份驗(yàn)證
選擇"SQL Server 和 Windows"
確定 5.在發(fā)布服務(wù)器和訂閱服務(wù)器上互相注冊(cè)
企業(yè)管理器
右鍵SQL Server組
新建SQL Server注冊(cè)...
下一步 可用的服務(wù)器中,輸入你要注冊(cè)的遠(yuǎn)程服務(wù)器名 添加
下一步 連接使用,選擇第二個(gè)"SQL Server身份驗(yàn)證"
下一步 輸入用戶名和密碼
下一步 選擇SQL Server組,也可以創(chuàng)建一個(gè)新組
下一步 完成 6.對(duì)于只能用IP,不能用計(jì)算機(jī)名的,為其注冊(cè)服務(wù)器別名
(在連接端配置,比如,在訂閱服務(wù)器上配置的話,服務(wù)器名稱中輸入的是發(fā)布服務(wù)器的IP)
開(kāi)始 程序 Microsoft SQL Server 客戶端網(wǎng)絡(luò)實(shí)用工具
別名 添加
網(wǎng)絡(luò)庫(kù)選擇"tcp/ip" 服務(wù)器別名輸入SQL服務(wù)器名
連接參數(shù) 服務(wù)器名稱中輸入SQL服務(wù)器ip地址
如果你修改了SQL的端口,取消選擇"動(dòng)態(tài)決定端口",并輸入對(duì)應(yīng)的端口號(hào)
SQL數(shù)據(jù)庫(kù)同步復(fù)制 一、建立發(fā)布和分發(fā)服務(wù)器 [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器] ->[使"@servername"成為它自己的分發(fā)服務(wù)器,SQL Server將創(chuàng)建分發(fā)數(shù)據(jù)庫(kù)和日志] ->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認(rèn)配置] -> [完成] 上述步驟完成后, 會(huì)在當(dāng)前"@servername" SQL Server數(shù)據(jù)庫(kù)里建立了一個(gè)distribion庫(kù)和 一個(gè)distributor_admin管理員級(jí)別的用戶(我們可以任意修改密碼) 服務(wù)器上新增加了四個(gè)作業(yè):
[ 代理程序歷史記錄清除: distribution ]
[ 分發(fā)清除: distribution ]
[ 復(fù)制代理程序檢查 ]
[ 重新初始化存在數(shù)據(jù)驗(yàn)證失敗的訂閱 ] SQL Server企業(yè)管理器里多了一個(gè)復(fù)制監(jiān)視器, 當(dāng)前的這臺(tái)機(jī)器就可以發(fā)布、分發(fā)、訂閱了。 我們?cè)俅卧赟QL Server企業(yè)管理器里[復(fù)制]-> 右鍵選擇
->[配置發(fā)布、訂閱服務(wù)器和分發(fā)],可以看到類似下圖: 我們可以在 [發(fā)布服務(wù)器和分發(fā)服務(wù)器的屬性] 窗口
-> [發(fā)布服務(wù)器] -> [新增] -> [確定]
-> [發(fā)布數(shù)據(jù)庫(kù)] -> [事務(wù)]/[合并] -> [確定]
-> [訂閱服務(wù)器] -> [新增] -> [確定]
把網(wǎng)絡(luò)上的其它SQL Server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.
新增一臺(tái)發(fā)布服務(wù)器的選項(xiàng): 我這里新建立的JIN001發(fā)布服務(wù)器是用管理員級(jí)別的數(shù)據(jù)庫(kù)用戶test連接的,
到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框, 默認(rèn)的是選中的,
在新建的JIN001發(fā)布服務(wù)器上建立和分發(fā)服務(wù)器FENGYU/FENGYU的鏈接的時(shí)需要輸入distributor_admin用戶的密碼
到發(fā)布服務(wù)器的管理鏈接要輸入密碼的可選框,也可以不選,
也就是不需要密碼來(lái)建立發(fā)布到分發(fā)服務(wù)器的鏈接(這當(dāng)然欠缺安全,在測(cè)試環(huán)境下可以使用) 二、新建立的網(wǎng)絡(luò)上另一臺(tái)發(fā)布服務(wù)器(例如JIN001)選擇分發(fā)服務(wù)器 [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器] -> 使用下列服務(wù)器(選定的服務(wù)器必須已配置為分發(fā)服務(wù)器) -> [選定服務(wù)器](例如FENGYU/FENGYU) -> [下一步] -> [輸入分發(fā)服務(wù)器(例如FENGYU/FENGYU)的distributor_admin用戶的密碼兩次] -> [下一步] -> [自定義配置] -> [否,使用下列的默認(rèn)配置] -> [下一步] -> [完成] -> [確定] 建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制發(fā)布的過(guò)程: [復(fù)制] -> [發(fā)布內(nèi)容] -> 右鍵選擇 -> [新建發(fā)布] -> [下一步] -> [選擇發(fā)布數(shù)據(jù)庫(kù)] -> [選中一個(gè)待發(fā)布的數(shù)據(jù)庫(kù)] -> [下一步] -> [選擇發(fā)布類型] -> [事務(wù)發(fā)布]/[合并發(fā)布]
-> [下一步] -> [指定訂閱服務(wù)器的類型] -> [運(yùn)行SQL Server 2000的服務(wù)器] -> [下一步] -> [指定項(xiàng)目] -> [在事務(wù)發(fā)布中只可以發(fā)布帶主鍵的表] -> [選中一個(gè)有主鍵的待發(fā)布的表] ->[在合并發(fā)布中會(huì)給表增加唯一性索引和 ROWGUIDCOL 屬性的唯一標(biāo)識(shí)符字段[rowguid],默認(rèn)值是newid()] (添加新列將: 導(dǎo)致不帶列列表的 INSERT 語(yǔ)句失敗,增加表的大小,增加生成第一個(gè)快照所要求的時(shí)間) ->[選中一個(gè)待發(fā)布的表] -> [下一步] -> [選擇發(fā)布名稱和描述] -> -> [下一步] -> [自定義發(fā)布的屬性] -> [否,根據(jù)指定方式創(chuàng)建發(fā)布] -> [下一步] -> [完成] -> [關(guān)閉] 發(fā)布屬性里有很多有用的選項(xiàng):設(shè)定訂閱到期(例如24小時(shí)) 設(shè)定發(fā)布表的項(xiàng)目屬性: 常規(guī)窗口可以指定發(fā)布目的表的名稱,可以跟原來(lái)的表名稱不一樣。 下圖是命令和快照窗口的欄目 ( SQL Server 數(shù)據(jù)庫(kù)復(fù)制技術(shù)實(shí)際上是用insert,update,delete操作在訂閱服務(wù)器上重做發(fā)布服務(wù)器上的事務(wù)操作 看文檔資料需要把發(fā)布數(shù)據(jù)庫(kù)設(shè)成完全恢復(fù)模式,事務(wù)才不會(huì)丟失 但我自己在測(cè)試中發(fā)現(xiàn)發(fā)布數(shù)據(jù)庫(kù)是簡(jiǎn)單恢復(fù)模式下,每10秒生成一些大事務(wù),10分鐘后再收縮數(shù)據(jù)庫(kù)日志,
這期間發(fā)布和訂閱服務(wù)器上的作業(yè)都暫停,暫?;謴?fù)后并沒(méi)有丟失任何事務(wù)更改 ) 發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列: 例如只選擇表里某些符合條件的記錄, 我們可以手工編寫(xiě)篩選的SQL語(yǔ)句: 發(fā)布表的訂閱選項(xiàng),并可以建立強(qiáng)制訂閱:
成功建立了發(fā)布以后,發(fā)布服務(wù)器上新增加了一個(gè)作業(yè): [ 失效訂閱清除 ] 分發(fā)服務(wù)器上新增加了兩個(gè)作業(yè):
[ JIN001-dack-dack-5 ] 類型[ REPL快照 ]
[ JIN001-dack-3 ] 類型[ REPL日志讀取器 ] 上面藍(lán)色字的名稱會(huì)根據(jù)發(fā)布服務(wù)器名,發(fā)布名及第幾次發(fā)布而使用不同的編號(hào) REPL快照作業(yè)是SQL Server復(fù)制的前提條件,它會(huì)先把發(fā)布的表結(jié)構(gòu),數(shù)據(jù),索引,約束等生成到發(fā)布服務(wù)器的OS目錄下文件
(當(dāng)有訂閱的時(shí)候才會(huì)生成, 當(dāng)訂閱請(qǐng)求初始化或者按照某個(gè)時(shí)間表調(diào)度生成) REPL日志讀取器在事務(wù)復(fù)制的時(shí)候是一直處于運(yùn)行狀態(tài)。(在合并復(fù)制的時(shí)候可以根據(jù)調(diào)度的時(shí)間表來(lái)運(yùn)行) 建立一個(gè)數(shù)據(jù)庫(kù)復(fù)制訂閱的過(guò)程: [復(fù)制] -> [訂閱] -> 右鍵選擇 -> [新建請(qǐng)求訂閱] -> [下一步] -> [查找發(fā)布] -> [查看已注冊(cè)服務(wù)器所做的發(fā)布] -> [下一步] -> [選擇發(fā)布] -> [選中已經(jīng)建立發(fā)布服務(wù)器上的數(shù)據(jù)庫(kù)發(fā)布名] -> [下一步] -> [指定同步代理程序登錄](méi) -> [當(dāng)代理程序連接到代理服務(wù)器時(shí):使用SQL Server身份驗(yàn)證]
(輸入發(fā)布服務(wù)器上distributor_admin用戶名和密碼) -> [下一步] -> [選擇目的數(shù)據(jù)庫(kù)] -> [選擇在其中創(chuàng)建訂閱的數(shù)據(jù)庫(kù)名]/[也可以新建一個(gè)庫(kù)名] -> [下一步] -> [允許匿名訂閱] -> [是,生成匿名訂閱] -> [下一步] -> [初始化訂閱] -> [是,初始化架構(gòu)和數(shù)據(jù)] -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件]
(訂閱服務(wù)器要能訪問(wèn)發(fā)布服務(wù)器的REPLDATA文件夾,如果有問(wèn)題,可以手工設(shè)置網(wǎng)絡(luò)共享及共享權(quán)限) -> [下一步] -> [快照傳送] -> [使用該發(fā)布的默認(rèn)快照文件夾中的快照文件] -> [下一步] -> [設(shè)置分發(fā)代理程序調(diào)度] -> [使用下列調(diào)度] -> [更改] -> [例如每五分鐘調(diào)度一次] -> [下一步] -> [啟動(dòng)要求的服務(wù)] -> [該訂閱要求在發(fā)布服務(wù)器上運(yùn)行SQLServerAgent服務(wù)] -> [下一步] -> [完成] -> [確定] 成功建立了訂閱后,訂閱服務(wù)器上新增加了一個(gè)類別是[REPL-分發(fā)]作業(yè)(合并復(fù)制的時(shí)候類別是[REPL-合并])
它會(huì)按照我們給的時(shí)間調(diào)度表運(yùn)行數(shù)據(jù)庫(kù)同步復(fù)制的作業(yè) 三、SQL Server復(fù)制配置好后, 可能出現(xiàn)異常情況的實(shí)驗(yàn)日志: 1.發(fā)布服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制沒(méi)有多大影響 中斷期間,分發(fā)和訂閱都接收到?jīng)]有復(fù)制的事務(wù)信息 2.分發(fā)服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制有一些影響 中斷期間,發(fā)布服務(wù)器的事務(wù)排隊(duì)堆積起來(lái)
(如果設(shè)置了較長(zhǎng)時(shí)間才刪除過(guò)期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫(kù)的事務(wù)日志可能會(huì)較快速膨脹), 訂閱服務(wù)器會(huì)因?yàn)樵L問(wèn)不到發(fā)布服務(wù)器,反復(fù)重試
我們可以設(shè)置重試次數(shù)和重試的時(shí)間間隔(最大的重試次數(shù)是9999, 如果每分鐘重試一次,可以支持約6.9天不出錯(cuò)) 分發(fā)服務(wù)器sql server服務(wù)啟動(dòng),網(wǎng)絡(luò)接通以后,發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上: 會(huì)需要一個(gè)比較長(zhǎng)的時(shí)間(實(shí)際上是生成所有事務(wù)的insert,update,delete語(yǔ)句,在訂閱服務(wù)器上去執(zhí)行)
我們?cè)谄胀ǖ腜C機(jī)上實(shí)驗(yàn)的58個(gè)事務(wù)100228個(gè)命令執(zhí)行花了7分28秒. 3.訂閱服務(wù)器斷網(wǎng),sql server服務(wù)關(guān)閉,重啟動(dòng),關(guān)機(jī)的時(shí)候,對(duì)已經(jīng)設(shè)置好的復(fù)制影響比較大,可能需要重新初試化 我們實(shí)驗(yàn)環(huán)境(訂閱服務(wù)器)從18:46分意外停機(jī)以, 第二天8:40分重啟動(dòng)后,
已經(jīng)設(shè)好的復(fù)制在8:40分以后又開(kāi)始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上
但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).
(我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒(méi)有進(jìn)行快照初試化,復(fù)制仍然是成功運(yùn)行的) 四、刪除已經(jīng)建好的發(fā)布和定閱可以直接用delete刪除按鈕 我們最好總是按先刪定閱,再刪發(fā)布,最后禁用發(fā)布的順序來(lái)操作。 如果要徹底刪去SQL Server上面的復(fù)制設(shè)置, 可以這樣操作: [復(fù)制] -> 右鍵選擇 [禁用發(fā)布] -> [歡迎使用禁用發(fā)布和分發(fā)向?qū) -> [下一步] -> [禁用發(fā)布] -> [要在"@servername"上禁用發(fā)布] -> [下一步] -> [完成禁用發(fā)布和分發(fā)向?qū) -> [完成] 我們也可以用T-SQL命令來(lái)完成復(fù)制中發(fā)布及訂閱的創(chuàng)建和刪除, 選中已經(jīng)設(shè)好的發(fā)布和訂閱, 按屬標(biāo)右鍵
可以[生成SQL腳本]。(這里就不詳細(xì)講了, 后面推薦的網(wǎng)站內(nèi)有比較詳細(xì)的內(nèi)容) 當(dāng)你試圖刪除或者變更一個(gè)table時(shí),出現(xiàn)以下錯(cuò)誤
Server: Msg 3724, Level 16, State 2, Line 1
Cannot drop the table object_name because it is being used for replication. 比較典型的情況是該table曾經(jīng)用于復(fù)制,但是后來(lái)又刪除了復(fù)制 處理辦法:
復(fù)制代碼 代碼如下:
select * from sysobjects where replinfo >0
sp_configure allow updates, 1
go
reconfigure with override
go
begin transaction
update sysobjects set replinfo = 0 where replinfo >0
commit transaction
go
rollback transaction
go
sp_configure allow updates, 0
go
reconfigure with override
go
在合并復(fù)制配置完全后,如果同步代理停止了。我要在程序中去重新啟動(dòng)合并復(fù)制的同步代理。請(qǐng)問(wèn)使用什么命令或存儲(chǔ)過(guò)程呢?
解決辦法:
sp_start_job
指示 SQL Server 代理程序立即執(zhí)行作業(yè)。 示例
下例啟動(dòng)名為 Nightly Backup 的作業(yè)。 USE msdb
EXEC sp_start_job @job_name = Nightly Backup
2、日志還原功能、、、
復(fù)制代碼 代碼如下:
說(shuō)明:
下面的代碼演示了如何利用日志還原功能,將主數(shù)據(jù)庫(kù)中的數(shù)據(jù)變化及時(shí)反饋到備用數(shù)據(jù)庫(kù)中
備用數(shù)據(jù)庫(kù)的數(shù)據(jù)可以隨時(shí)用于查詢,但不能被更新(備用數(shù)據(jù)庫(kù)只讀)。 首先,創(chuàng)建一個(gè)演示用的數(shù)據(jù)庫(kù)(主數(shù)據(jù)庫(kù))
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 對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份
BACKUP DATABASE Db_test TO DISK=c:\test_data.bak WITH FORMAT
GO 把數(shù)據(jù)庫(kù)還原成備用數(shù)據(jù)庫(kù)(演示主數(shù)據(jù)庫(kù)與這個(gè)備用數(shù)據(jù)庫(kù)之間的同步)
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 啟動(dòng) SQL Agent 服務(wù)
EXEC master..xp_cmdshell net start sqlserveragent,no_output
GO 創(chuàng)建主服務(wù)器數(shù)據(jù)訓(xùn)與備用服務(wù)器數(shù)據(jù)庫(kù)之間同步的作業(yè)
DECLARE @jogid uniqueidentifier
EXEC msdb..sp_add_job
@job_id = @jogid OUTPUT,
@job_name = N數(shù)據(jù)同步處理 創(chuàng)建同步處理步驟
EXEC msdb..sp_add_jobstep
@job_id = @jogid,
@step_name = N數(shù)據(jù)同步,
@subsystem = TSQL,
@command = N
主數(shù)據(jù)庫(kù)中進(jìn)行日志備份
BACKUP LOG Db_test TO DISK=c:\test_log.bak WITH FORMAT 備用數(shù)據(jù)庫(kù)中還原主數(shù)據(jù)庫(kù)的日志備份(應(yīng)用主數(shù)據(jù)庫(kù)中的最新變化
實(shí)際應(yīng)該時(shí)主數(shù)據(jù)庫(kù)備份與備用數(shù)據(jù)庫(kù)的還原作業(yè)應(yīng)該分別在主服務(wù)器和備用服務(wù)器上建立,并且備份文件應(yīng)該放在主服務(wù)器和備用都能訪問(wèn)的共享目錄中
RESTORE LOG Db_test_bak FROM DISK=c:\test_log.bak WITH STANDBY=c:\test_log.ldf,
@retry_attempts = 5,
@retry_interval = 5 創(chuàng)建調(diào)度(每分鐘執(zhí)行一次)
EXEC msdb..sp_add_jobschedule
@job_id = @jogid,
@name = N時(shí)間安排,
@freq_type=4,
@freq_interval=1,
@freq_subday_type=0x4,
@freq_subday_interval=1,
@freq_recurrence_factor=1 添加目標(biāo)服務(wù)器
EXEC msdb.dbo.sp_add_jobserver
@job_id = @jogid,
@server_name = N(local)
GO 通過(guò)上述處理,主數(shù)據(jù)庫(kù)與備用數(shù)據(jù)庫(kù)之間的同步關(guān)系已經(jīng)設(shè)置完成
下面開(kāi)始測(cè)試是否能實(shí)現(xiàn)同步 在主數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)測(cè)試用的表
CREATE TABLE Db_test.dbo.TB_test(ID int)
GO 等待1分鐘30秒(由于同步的時(shí)間間隔設(shè)置為1分鐘,所以要延時(shí)才能看到效果)
WAITFOR DELAY 00:01:30
GO 查詢一下備用數(shù)據(jù)庫(kù),看看同步是否成功
SELECT * FROM Db_test_bak.dbo.TB_test 結(jié)果:
ID
- (所影響的行數(shù)為 0 行)
測(cè)試成功
GO 最后刪除所有的測(cè)試
DROP DATABASE Db_test,Db_test_bak
EXEC msdb..sp_delete_job @job_name=N數(shù)據(jù)同步處理
GO
=========================================================== 服務(wù)器檔機(jī)處理說(shuō)明
使用這種方式建立的數(shù)據(jù)庫(kù)同步,當(dāng)主數(shù)據(jù)庫(kù)不可用時(shí)(例如,主數(shù)據(jù)庫(kù)損壞或者停機(jī)檢修)
可以使用以下兩種方法使備用數(shù)據(jù)庫(kù)可用。
RESTORE LOG Db_test_bak WITH RECOVERY
2. 如果主數(shù)據(jù)庫(kù)可以備份出最新日志,則可以使用下面的語(yǔ)句。
先備份主數(shù)據(jù)庫(kù)的最新的事務(wù)日志
BACKUP LOG Db_test TO DISK=c:\test_log.bak WITH FORMAT
再在備用數(shù)據(jù)庫(kù)中恢復(fù)最新的事務(wù)日志,并且使備用數(shù)據(jù)庫(kù)可讀寫(xiě)(升級(jí)為主數(shù)據(jù)庫(kù))
RESTORE LOG Db_test_bak FROM DISK=c:\test_log.bak 簡(jiǎn)單地說(shuō):
1. 你的sql服務(wù)要使用指定的windows用戶登陸, 而不能使用"本地系統(tǒng)帳戶"
2. 用于登陸sql服務(wù)的用戶要求對(duì)共享目錄具有所有權(quán)限
3. 如果你的電腦沒(méi)有加入到域, 還必須保證源和目標(biāo)服務(wù)器的sql服務(wù)設(shè)置的登陸用戶是一樣的(用戶名和密碼都一樣) 網(wǎng)絡(luò)備份主要是權(quán)限設(shè)置問(wèn)題, 參考下面的備份文件共享目錄權(quán)限設(shè)置方法去解決目錄的共享權(quán)限就可以了 下面假設(shè)是假設(shè)A服務(wù)器上的數(shù)據(jù)庫(kù)備份到B服務(wù)器上的共享目錄權(quán)限設(shè)置(兩臺(tái)服務(wù)器應(yīng)該在局域網(wǎng)內(nèi),允許目錄共享訪問(wèn)):: 1.機(jī)器A,B創(chuàng)建一個(gè)同名的windows用戶,用戶組設(shè)置為administrators,并設(shè)置相同的密碼,做為備份文件夾文件夾的有效訪問(wèn)用戶,操作:
我的電腦
控制面板
管理工具
計(jì)算機(jī)管理
用戶和組
右鍵用戶
新建用戶
建立一個(gè)隸屬于administrator組的登陸windows的用戶 2.在B機(jī)器器上,新建一個(gè)共享目錄,做為備份文件的存放目錄,操作:
我的電腦D:\ 新建一個(gè)目錄,名為: BAK
右鍵這個(gè)新建的目錄
屬性共享
選擇"共享該文件夾"
通過(guò)"權(quán)限"按紐來(lái)設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限
確定
3.設(shè)置 MSSQLSERVER 及 SQLSERVERAGENT 服務(wù)的啟動(dòng)用戶
開(kāi)始程序管理工具服務(wù)
右鍵 MSSQLSERVER
屬性登陸選擇"此賬戶"
輸入或者選擇第一步中創(chuàng)建的windows登錄用戶名
"密碼"中輸入該用戶的密碼
確定
同樣的方法設(shè)置 SQLSERVERAGENT 4.在A機(jī)器上完成對(duì)B機(jī)器BAK目錄的映射 5.查詢分析器中執(zhí)行下面的語(yǔ)句,檢驗(yàn)是否成功:
exec master..xp_cmdshell dir 映射的盤符 6.A服務(wù)器上做備份計(jì)劃 備注:創(chuàng)建一個(gè)新的用戶只是為了讓MSSQLSERVER服務(wù)的啟動(dòng)帳戶與共享目錄的有效訪問(wèn)同名且密碼相同,這樣才能通過(guò)驗(yàn)證(所以你也可以用其他有效的用戶來(lái)代替,只需要滿足用戶名和密碼相同,并且擁有足夠的權(quán)限)
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
相關(guān)文章