當(dāng)前位置:工程項(xiàng)目OA系統(tǒng) > 泛普各地 > 江西OA系統(tǒng) > 南昌OA系統(tǒng) > 南昌OA信息化
如何同步兩個(gè)SQLServer數(shù)據(jù)庫(kù)的內(nèi)容?
申請(qǐng)免費(fèi)試用、咨詢電話:400-8352-114
文章來(lái)源:泛普軟件 程序代碼可以有版本管理CVS進(jìn)行同步管理,可是數(shù)據(jù)庫(kù)同步就非常麻煩,只能自己改了一個(gè)后再去改另一個(gè),如果忘記了更改另一個(gè)經(jīng)常造成兩個(gè)數(shù)據(jù)庫(kù)的結(jié)構(gòu)或內(nèi)容上不一致.分發(fā)與復(fù)制
用強(qiáng)制訂閱實(shí)現(xiàn)數(shù)據(jù)庫(kù)同步操作
大量和批量的數(shù)據(jù)可以用數(shù)據(jù)庫(kù)的同步機(jī)制處理:
//
說明:
為方便操作,所有操作均在發(fā)布服務(wù)器(分發(fā)服務(wù)器)上操作,并使用推模式
在客戶機(jī)器使用強(qiáng)制訂閱方式。
有疑問聯(lián)系作者:zlp321001@hotmail.com
測(cè)試通過
//
--1:環(huán)境
服務(wù)器環(huán)境:
機(jī)器名稱: ZehuaDb
操作系統(tǒng):Windows 2000 Server
數(shù)據(jù)庫(kù)版本:SQL 2000 Server 個(gè)人版
客戶端
機(jī)器名稱:Zlp
操作系統(tǒng):Windows 2000 Server
數(shù)據(jù)庫(kù)版本:SQL 2000 Server 個(gè)人版
--2:建用戶帳號(hào)
在服務(wù)器端建立域用戶帳號(hào)
我的電腦管理->本地用戶和組->用戶->建立
UserName:zlp
UserPwd:zlp
--3:重新啟動(dòng)服務(wù)器MSSQLServer
我的電腦->控制面版->管理工具->服務(wù)->MSSQLServer 服務(wù)
(更改為:域用戶帳號(hào),我們新建的zlp用戶 .zlp,密碼:zlp)
--4:安裝分發(fā)服務(wù)器
A:配置分發(fā)服務(wù)器
工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->下一步->下一步(所有的均采用默認(rèn)配置)
B:配置發(fā)布服務(wù)器
工具->復(fù)制->創(chuàng)建和管理發(fā)布->選擇要發(fā)布的數(shù)據(jù)庫(kù)(SZ)->下一步->快照發(fā)布->下一步->
選擇要發(fā)布的內(nèi)容->下一步->下一步->下一步->完成
C:強(qiáng)制配置訂閱服務(wù)器(推模式,拉模式與此雷同)
工具->復(fù)制->配置發(fā)布、訂閱服務(wù)器和分發(fā)->訂閱服務(wù)器->新建->SQL Server數(shù)據(jù)庫(kù)->輸入客戶端服務(wù)器名稱(ZLP)->使用SQL Server 身份驗(yàn)證(sa,空密碼)->確定->應(yīng)用->確定
D:初始化訂閱
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->雙擊訂閱->強(qiáng)制新建->下一步->選擇啟用的訂閱服務(wù)器->ZLP->
下一步->下一步->下一步->下一步->完成
--5:測(cè)試配置是否成功
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->雙擊SZ:SZ->點(diǎn)狀態(tài)->點(diǎn)立即運(yùn)行代理程序
查看:
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->SZ:SZ->選擇ZLP:SZ(類型強(qiáng)制)->鼠標(biāo)右鍵->啟動(dòng)同步處理
如果沒有錯(cuò)誤標(biāo)志(紅色叉),恭喜您配置成功
--6:測(cè)試數(shù)據(jù)
--在服務(wù)器執(zhí)行:
選擇一個(gè)表,執(zhí)行如下SQL
insert into WQ_NEWSGROUP_S select '測(cè)試成功',5
復(fù)制監(jiān)視器->發(fā)布服務(wù)器(ZEHUADB)->SZ:SZ->快照->啟動(dòng)代理程序
->ZLP:SZ(強(qiáng)制)->啟動(dòng)同步處理
去查看同步的 WQ_NEWSGROUP_S 是否插入了一條新的記錄
測(cè)試完畢,通過。
--7修改數(shù)據(jù)庫(kù)的同步時(shí)間,一般選擇夜晚執(zhí)行數(shù)據(jù)庫(kù)同步處理
(具體操作略) :D
/*
注意說明:
服務(wù)器一端不能以(local)進(jìn)行數(shù)據(jù)的發(fā)布與分發(fā),需要先刪除注冊(cè),然后新建注冊(cè)本地計(jì)算機(jī)名稱
卸載方式:工具->復(fù)制->禁止發(fā)布->是在"ZehuaDb"上靜止發(fā)布,卸載所有的數(shù)據(jù)庫(kù)同步配置服務(wù)器
注意:發(fā)布服務(wù)器、分發(fā)服務(wù)器中的SQLServerAgent服務(wù)必須啟動(dòng)
采用推模式: "D:Microsoft SQL ServerMSSQLREPLDATAunc" 目錄文件可以不設(shè)置共享
拉模式:則需要共享~!
*/
少量數(shù)據(jù)庫(kù)同步可以采用觸發(fā)器實(shí)現(xiàn),同步單表即可。
配置過程中可能出現(xiàn)的問題
在SQL Server 2000里設(shè)置和使用數(shù)據(jù)庫(kù)復(fù)制之前,應(yīng)先檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器下面幾點(diǎn)是否滿足:
1、MSSQLserver和Sqlserveragent服務(wù)是否是以域用戶身份啟動(dòng)并運(yùn)行的(.administrator用戶也是可以的)
如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡(luò)功能,會(huì)產(chǎn)生以下錯(cuò)誤:
進(jìn)程未能連接到Distributor '@Server name'
(如果您的服務(wù)器已經(jīng)用了SQL Server全文檢索服務(wù), 請(qǐng)不要修改MSSQLserver和Sqlserveragent服務(wù)的local啟動(dòng)。
會(huì)照成全文檢索服務(wù)不能用。請(qǐng)換另外一臺(tái)機(jī)器來(lái)做SQL Server 2000里復(fù)制中的分發(fā)服務(wù)器。)
修改服務(wù)啟動(dòng)的登錄用戶,需要重新啟動(dòng)MSSQLserver和Sqlserveragent服務(wù)才能生效。
2、檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器是否改過名稱(需要srvid=0的本地機(jī)器上srvname和datasource一樣)
在查詢分析器里執(zhí)行:
use master
select srvid,srvname,datasource from sysservers
如果沒有srvid=0或者srvid=0(也就是本機(jī)器)但srvname和datasource不一樣, 需要按如下方法修改:
USE master GO -- 設(shè)置兩個(gè)變量 DECLARE @serverproperty_servername varchar(100), @servername varchar(100) -- 取得Windows NT 服務(wù)器和與指定的 SQL Server 實(shí)例關(guān)聯(lián)的實(shí)例信息 SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName')) -- 返回運(yùn)行 Microsoft SQL Server 的本地服務(wù)器名稱 SELECT @servername = CONVERT(varchar(100), @@SERVERNAME) -- 顯示獲取的這兩個(gè)參數(shù) select @serverproperty_servername,@servername --如果@serverproperty_servername和@servername不同(因?yàn)槟愀倪^計(jì)算機(jī)名字),再運(yùn)行下面的 --刪除錯(cuò)誤的服務(wù)器名 EXEC sp_dropserver @server=@servername --添加正確的服務(wù)器名 EXEC sp_addserver @server=@serverproperty_servername, @local='local' |
修改這項(xiàng)參數(shù),需要重新啟動(dòng)MSSQLserver和Sqlserveragent服務(wù)才能生效。
這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過程中出現(xiàn)18482、18483錯(cuò)誤了。
3、檢查SQL Server企業(yè)管理器里面相關(guān)的幾臺(tái)SQL Server注冊(cè)名是否和上面第二點(diǎn)里介紹的srvname一樣
不能用IP地址的注冊(cè)名。
(我們可以刪掉IP地址的注冊(cè),新建以SQL Server管理員級(jí)別的用戶注冊(cè)的服務(wù)器名)
這樣一來(lái)就不會(huì)在創(chuàng)建復(fù)制的過程中出現(xiàn)14010、20084、18456、18482、18483錯(cuò)誤了。
4、檢查相關(guān)的幾臺(tái)SQL Server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪問
如果ping主機(jī)IP地址可以,但ping主機(jī)名不通的時(shí)候,需要在
winntsystem32driversetchosts (WIN2000)
windowssystem32driversetchosts (WIN2003)
文件里寫入數(shù)據(jù)庫(kù)服務(wù)器IP地址和主機(jī)名的對(duì)應(yīng)關(guān)系。
例如:
127.0.0.1 localhost 192.168.0.35 oracledb oracledb 192.168.0.65 fengyu02 fengyu02 202.84.10.193 bj_db bj_db |
或者在SQL Server客戶端網(wǎng)絡(luò)實(shí)用工具里建立別名,例如:
5、系統(tǒng)需要的擴(kuò)展存儲(chǔ)過程是否存在(如果不存在,需要恢復(fù)):
sp_addextendedproc 'xp_regenumvalues',@dllname ='xpstar.dll' go sp_addextendedproc 'xp_regdeletevalue',@dllname ='xpstar.dll' go sp_addextendedproc 'xp_regdeletekey',@dllname ='xpstar.dll' go sp_addextendedproc xp_cmdshell ,@dllname ='xplog70.dll'
|
->[配置發(fā)布、訂閱服務(wù)器和分發(fā)]的圖形界面來(lái)配置數(shù)據(jù)庫(kù)復(fù)制了。
下面是按順序列出配置復(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ā)布的過程:
[復(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ù)后并沒有丟失任何事務(wù)更改 )
發(fā)布表可以做數(shù)據(jù)篩選,例如只選擇表里面的部分列:
例如只選擇表里某些符合條件的記錄, 我們可以手工編寫篩選的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ù)制訂閱的過程:
[復(fù)制] -> [訂閱] -> 右鍵選擇 -> [新建請(qǐng)求訂閱]
-> [下一步] -> [查找發(fā)布] -> [查看已注冊(cè)服務(wù)器所做的發(fā)布]
-> [下一步] -> [選擇發(fā)布] -> [選中已經(jīng)建立發(fā)布服務(wù)器上的數(shù)據(jù)庫(kù)發(fā)布名]
-> [下一步] -> [指定同步代理程序登錄] -> [當(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ù)器要能訪問發(fā)布服務(wù)器的REPLDATA文件夾,如果有問題,可以手工設(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ù)制沒有多大影響
中斷期間,分發(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í)間才刪除過期訂閱的選項(xiàng), 繁忙發(fā)布數(shù)據(jù)庫(kù)的事務(wù)日志可能會(huì)較快速膨脹),
訂閱服務(wù)器會(huì)因?yàn)樵L問不到發(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分以后又開始正常運(yùn)行了, 發(fā)布服務(wù)器上的堆積作業(yè)將按時(shí)間順序作用到訂閱機(jī)器上
但復(fù)制管理器里出現(xiàn)快照的錯(cuò)誤提示, 快照可能需要重新初試化,復(fù)制可能需要重新啟動(dòng).
(我們實(shí)驗(yàn)環(huán)境的機(jī)器并沒有進(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 |
疑問:
在合并復(fù)制配置完全后,如果同步代理停止了。我要在程序中去重新啟動(dòng)合并復(fù)制的同步代理。請(qǐng)問使用什么命令或存儲(chǔ)過程呢?
解決辦法:
sp_start_job
指示 SQL Server 代理程序立即執(zhí)行作業(yè)。
示例
下例啟動(dòng)名為 Nightly Backup 的作業(yè)。
USE msdb
EXEC sp_start_job @job_name = 'Nightly Backup'
2、日志還原功能、、、
/*--說明: 下面的代碼演示了如何利用日志還原功能,將主數(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ù)) --對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份 --把數(shù)據(jù)庫(kù)還原成備用數(shù)據(jù)庫(kù)(演示主數(shù)據(jù)庫(kù)與這個(gè)備用數(shù)據(jù)庫(kù)之間的同步) --啟動(dòng) SQL Agent 服務(wù) --創(chuàng)建主服務(wù)器數(shù)據(jù)訓(xùn)與備用服務(wù)器數(shù)據(jù)庫(kù)之間同步的作業(yè) --創(chuàng)建同步處理步驟 --備用數(shù)據(jù)庫(kù)中還原主數(shù)據(jù)庫(kù)的日志備份(應(yīng)用主數(shù)據(jù)庫(kù)中的最新變化 --創(chuàng)建調(diào)度(每分鐘執(zhí)行一次) -- 添加目標(biāo)服務(wù)器 --通過上述處理,主數(shù)據(jù)庫(kù)與備用數(shù)據(jù)庫(kù)之間的同步關(guān)系已經(jīng)設(shè)置完成 --在主數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)測(cè)試用的表 --等待1分鐘30秒(由于同步的時(shí)間間隔設(shè)置為1分鐘,所以要延時(shí)才能看到效果) --查詢一下備用數(shù)據(jù)庫(kù),看看同步是否成功 /*--結(jié)果: (所影響的行數(shù)為 0 行) --測(cè)試成功 --最后刪除所有的測(cè)試
/*--服務(wù)器檔機(jī)處理說明 |
--1. 如果主數(shù)據(jù)庫(kù)損壞,無(wú)法備份出最新的日志,可以直接使用下面的語(yǔ)句使備用數(shù)據(jù)庫(kù)可讀寫(丟失最近一次日志還原后的所有數(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ù)可讀寫(升級(jí)為主數(shù)據(jù)庫(kù))
--RESTORE LOG Db_test_bak FROM DISK='c:test_log.bak'
簡(jiǎn)單地說:
1. 你的sql服務(wù)要使用指定的windows用戶登陸, 而不能使用"本地系統(tǒng)帳戶"
2. 用于登陸sql服務(wù)的用戶要求對(duì)共享目錄具有所有權(quán)限
3. 如果你的電腦沒有加入到域, 還必須保證源和目標(biāo)服務(wù)器的sql服務(wù)設(shè)置的登陸用戶是一樣的(用戶名和密碼都一樣)
網(wǎng)絡(luò)備份主要是權(quán)限設(shè)置問題, 參考下面的備份文件共享目錄權(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),允許目錄共享訪問)::
1.機(jī)器A,B創(chuàng)建一個(gè)同名的windows用戶,用戶組設(shè)置為administrators,并設(shè)置相同的密碼,做為備份文件夾文件夾的有效訪問用戶,操作:
我的電腦
--控制面板
--管理工具
--計(jì)算機(jī)管理
--用戶和組
--右鍵用戶
--新建用戶
--建立一個(gè)隸屬于administrator組的登陸windows的用戶
2.在B機(jī)器器上,新建一個(gè)共享目錄,做為備份文件的存放目錄,操作:
我的電腦--D: 新建一個(gè)目錄,名為: BAK
--右鍵這個(gè)新建的目錄
--屬性--共享
--選擇"共享該文件夾"
--通過"權(quán)限"按紐來(lái)設(shè)置具體的用戶權(quán)限,保證第一步中創(chuàng)建的用戶具有對(duì)該文件夾的所有權(quán)限
--確定
3.設(shè)置 MSSQLSERVER 及 SQLSERVERAGENT 服務(wù)的啟動(dòng)用戶
開始--程序--管理工具--服務(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)帳戶與共享目錄的有效訪問同名且密碼相同,這樣才能通過驗(yàn)證(所以你也可以用其他有效的用戶來(lái)代替,只需要滿足用戶名和密碼相同,并且擁有足夠的權(quán)限)(techtarger)
- 1新型OA系統(tǒng)應(yīng)有“溫度”
- 2移動(dòng)OA帶來(lái)辦公效率質(zhì)的提升
- 3移動(dòng)OA解決方案開啟綠色、高效會(huì)議時(shí)代
- 4信息化現(xiàn)狀分析 企業(yè)IT規(guī)劃成關(guān)鍵
- 5面向未來(lái)的安全防護(hù)UTM
- 6如何同步兩個(gè)SQLServer數(shù)據(jù)庫(kù)的內(nèi)容?
- 7安全小洞不補(bǔ),大洞吃苦
- 8Linux安全十二法則
- 9OA系統(tǒng)發(fā)力服裝行業(yè)應(yīng)用
- 10OA軟件將超越ERP成為最重要管理系統(tǒng)
- 11OA系統(tǒng)助咨詢業(yè)優(yōu)化流程管理
- 12間諜軟件的慣用手法
- 13如何用IDS保衛(wèi)數(shù)據(jù)庫(kù)
- 14《我愛男閨蜜》再熱婚戀市場(chǎng) OA辦公系統(tǒng)啼笑皆非話姻緣
- 15OA系統(tǒng)之小日程也有大作為
- 16泛普軟件:中型企業(yè)OA辦公系統(tǒng)選購(gòu)攻略
- 17OA軟件選型要把持好三個(gè)度
- 18打造企業(yè)OA“公有云”的碧海藍(lán)天
- 19信息安全靠細(xì)節(jié)制勝
- 20談促進(jìn)企業(yè)快速發(fā)展的優(yōu)化幫手OA系統(tǒng)
- 21如何讓OA辦公系統(tǒng)更接地氣
- 2210大安全難題困擾企業(yè)
- 23網(wǎng)絡(luò)改造要充分利用現(xiàn)有網(wǎng)絡(luò)環(huán)境
- 24搜索引擎的企業(yè)應(yīng)用
- 2550款免費(fèi)的好軟件
- 262007年十大IT熱點(diǎn)技術(shù)
- 27大部分企業(yè)“內(nèi)部攻擊”的來(lái)源
- 28沒有OA系統(tǒng),企業(yè)信息化普及會(huì)受阻
- 29動(dòng)態(tài)VPN技術(shù)
- 30泛普軟件:OA辦公系統(tǒng)助推名企裁員潮?
成都公司:成都市成華區(qū)建設(shè)南路160號(hào)1層9號(hào)
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓