用觸發(fā)器實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間相同表的同步_第1頁
用觸發(fā)器實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間相同表的同步_第2頁
用觸發(fā)器實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間相同表的同步_第3頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、用觸發(fā)器實(shí)現(xiàn)兩個(gè)數(shù)據(jù)庫之間相同表的同步 2008-06-13 14:20近日單位建立OA服務(wù)器,要實(shí)現(xiàn)兩臺(tái)服務(wù)器間數(shù)據(jù)庫表的同步。一開始想采用訂閱發(fā)布的模式,結(jié)果沒有成功,連鳴大哥讓我想一下怎么解決,結(jié)果我從網(wǎng)上找了用觸發(fā)器實(shí)現(xiàn)的方法,覺得這種方法更適合我們的工作要求。OA服務(wù)器更新較少,如果采用定時(shí)備份的方法會(huì)浪費(fèi)服務(wù)器的效率,用觸發(fā)器就可以在數(shù)據(jù)庫發(fā)生變化的時(shí)候及時(shí)更新兩臺(tái)服務(wù)器的數(shù)據(jù)。觸發(fā)器的語法如下: Trigger on an INSERT, UPDATE, or DELETE statement to a table or view (DML Trigger) CREATE TRI

2、GGER schema_name . trigger_name ON table | view WITH <dml_trigger_option> ,.n FOR | AFTER | INSTEAD OF INSERT , UPDATE , DELETE WITH APPEND NOT FOR REPLICATION AS sql_statement ; .n | EXTERNAL NAME <method specifier ; > <dml_trigger_option> := ENCRYPTION EXECUTE AS Clause 對(duì)兩個(gè)服務(wù)器之間的

3、表進(jìn)行同步,首先要建立鏈接服務(wù)器。在 server1 上創(chuàng)建連接服務(wù)器,以便在 server1 中操作 server2,實(shí)現(xiàn)同步 exec sp_addlinkedserver 'server2','','SQLOLEDB','server2的數(shù)據(jù)庫實(shí)例名或ip' exec sp_addlinkedsrvlogin 'server2','false',null,'用戶名','密碼' gotrigger的代碼如下:假設(shè)遠(yuǎn)程服務(wù)器的表是oa_userset ANSI_NU

4、LLS ON set QUOTED_IDENTIFIER ON go CREATE TRIGGER Trigger_Add_user ON dbo.oa_user AFTER INSERT AS BEGIN SET NOCOUNT ON; set xact_abort on select * from inserted END按照網(wǎng)上的攻略所說,建立了上述的觸發(fā)器,就可以當(dāng)oa_user表進(jìn)行插入操作的時(shí)候,本地服務(wù)器中的表也會(huì)有這條記錄。但是在實(shí)際實(shí)施中,系統(tǒng)報(bào)了如下的錯(cuò)誤。服務(wù)器: 消息 7391,級(jí)別 16,狀態(tài) 1,行 1 該操作未能執(zhí)行,因?yàn)?OLE DB 提供程序 'SQL

5、OLEDB' 無法啟動(dòng)分布式事務(wù)。 OLE/DB provider returned message: 新事務(wù)不能登記到指定的事務(wù)處理器中。在網(wǎng)上找了找關(guān)于7391的錯(cuò)誤還有dtc無法啟動(dòng)的錯(cuò)誤描述,發(fā)現(xiàn)造成這種情況的的原因很多。總結(jié)解決方法如下:一、確保 MSDTC 服務(wù)帳戶 登錄為 " 是 NetworkService 帳戶。在運(yùn)行對(duì)話框中,輸入services.msc然后確定。在服務(wù)窗口,找到 DistributedTransactionCoordinator服務(wù)中檢查登陸名為NetworkService 。 錯(cuò)誤的情況是:登陸名為本地系統(tǒng)帳戶,解決方式如下: 開始 ,

6、 依次 運(yùn)行 。 在 運(yùn)行 對(duì)話框中, 鍵入 cmd然后單擊 確定 。 在命令提示符處, 鍵入 Net stop msdtc 要停止 MSDTC 服務(wù)。在命令提示符處, 鍵入 Msdtc uninstall 要?jiǎng)h除 MSDTC。 在命令提示符處, 鍵入 regedit 要打開注冊(cè)表編輯器。 在注冊(cè)表編輯器, 找到以下項(xiàng):HKEY_LOCAL_MACHINESOFTWAREMicrosoftMSDTC注冊(cè)表項(xiàng)。刪除該項(xiàng)。 退出注冊(cè)表編輯器。 在命令提示符處, 鍵入 Msdtc install 要安裝 MSDTC。 在命令提示符處, 鍵入 Net start msdtc 要啟動(dòng) MSDTC 服務(wù)。

7、二、啟用msdc以允許網(wǎng)絡(luò)事務(wù)。點(diǎn)擊開始-管理工具-組件-組件服務(wù)-計(jì)算機(jī)-我的電腦。右鍵-屬性。找到msdtc選項(xiàng)。全部選中,驗(yàn)證的地方選擇不需驗(yàn)證.最后確定生效。三、防火墻設(shè)定。dtc的端口是135,如果你打開了防火墻,就把135端口設(shè)為例外。四、更改hosts文件(此處注意沒有擴(kuò)展名)通常在c:windowssystem32driversetc里面。文件參考如下 = # Copyright (c) 1993-1999 Microsoft Corp. # # This is a sample HOSTS file used by Microsoft TCP/IP for Windows.

8、# This file contains the mappings of IP addresses to host names. Each # entry should be kept on an individual line. The IP address should # be placed in the first column followed by the corresponding host name. # The IP address and the host name should be separated by at least one # space. # # Additionally, comments (such as these) may be inserted on individual # lines or following the machine name denoted by a '#' symbol. # # For example: # 關(guān)鍵就是最后幾行:前面寫IP,后面寫該電腦的名稱。上面4中情況,我在實(shí)施中遇到了 第2種和第4種,由于本人小懶了下,把防火墻關(guān)閉了,沒有測試第3種情況。網(wǎng)上關(guān)于hosts文件的說明很少,大多數(shù)說明都是關(guān)于前3種情況的,看了很多文章,才看見hosts這種情況,貌似是分布式回掉的時(shí)候要看本

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論