復制的概念
復制作為一個重要並且強大的技術
為分布式數據的存儲和處理提供了有力支持
微軟公司的SQL Server可以生成數據的拷貝
並能把這些數據的拷貝分發到不同的地方
自動進行數據的同步
保持所有的數據拷貝具有相同的數據
SQL Server采用一種稱為
松散一致
的復制模式在兩個數據庫之間進行復制
這兩個數據庫既可以在同一台計算機上
也可以在不同的計算機上
彼此通過局域網(LAN)
廣域網(WAN)進行連接
我們公司在開發
西安市國家稅務局內部網絡信息系統
中
正是利用了SQL Server的復制功能
實現全西安市分布的稅收數據的復制同步
西安市國家稅局包括市局機關和下屬的
個基層征管分局
分布於西安市不同的地理位置
彼此通過DDN專線或X
專線連接
構成了西安國稅局廣域網
市局信息中心用Windows NT Server
構建一個Windows NT的單主域網絡環境
下屬每個分局有一台運行Windows NT Server
或Windows NT Server
的服務器
通過廣域網加入到單主域的環境中作為一台獨立的服務器運行
各分局建有本分局的局域網
網絡環境為Novell和Windows NT的混合網絡環境
全西安市所有的納稅人
均到指定的征管分局進行納稅登記
納稅申報
國稅局用FoxPro開發了基於Novell網絡環境的稅收征管軟件
在各分局征收大廳由Novell的無盤工作站負責稅收數據的錄入
寫入到Novell服務器上的數個DBF文件中
由於稅收征管數據分布在全市不同的征管分局
為全市范圍納稅信息的檢索和分析帶來困難
新系統的開發
在原有基礎上
編制專門的數據轉換程序
把存儲於Novell服務器上的DBF文件轉換到本分局Windows NT上的SQL Server數據庫中
每個分局的SQL Server數據庫與市局信息中心的SQL Server數據庫進行復制
及時把最新的稅收數據傳遞到市局信息中心
這樣在市局信息中心
就有了全市所有稅收征管數據
信息中心建立Intranet Web站點
用戶的計算機只要連上各分局的局域網
或者通過Modem撥號到信息中心的RAS服務器
就可以用IE浏覽器訪問IIS服務器
由IIS服務器向SQL Server服務器發出數據請求並把結果按HTML格式返回給用戶浏覽器
系統的設計采用客戶浏覽/服務器的多層結構方式
客戶端采用標准的浏覽器訪問方式
用戶在自己的計算機上安裝IE浏覽器(WIN
WINNT
中已內置IE
浏覽器)
輸入Web 站點地址
就可以進入該系統
在中間層
由Internet Information Server完成大多數的用戶業務規則的實現
例如對用戶權限的限制
數據請求的生成等
IIS會根據不同的用戶所擁有的不同的權限
生成不同的頁面
將來當業務規則發生變化時
只需要在Internet Information Server上進行相應的更改
這種更改就會在系統的每一個用戶下次訪問系統時得到體現
在系統的最低層
由SQL Server大型關系數據庫作為支撐
西安全市的稅務數據是一個以GB為單位的大型數據庫
納稅數據表中的數據記錄超過數百萬條
在如此大量的數據中進行快速的數據檢索和數據分析
一般的數據庫軟件是難以完成的
SQL Server關系型數據庫
較好地完成了用戶提出的各種數據的檢索要求
同時也正是利用了SQL Server的數據復制技術
把近二十個分局的數據通過廣域網復制到信息中心來
使用戶能快速獲取全市的納稅信息
該系統實現的一個重要部分就是各分局稅收征管數據的復制
SQL Server的復制有以下幾個特點
基於事務
有復制標志的事務從源數據庫的事務日志讀出
並送到目的數據庫
例如執行了一條Insert語句使源數據庫的數據發生變化
這條Insert語句會被寫入到一個數據庫中
我們稱之為發布數據庫(Distrbution)
在適當的時候
這條Insert語句會送到復制的目的數據庫並執行該Insert語句
以此保證兩端的數據保持同步
以三種不同的方式使用服務器
(
)出版(Publication)
作為源數據服務器(在本系統中是各分局的SQL Server服務器)
當標志復制的表(Table)的數據發生變化時
產生該變化的事務被刻上復制標志
由日志閱讀器(LogReader)把該事務送入分發數據庫(Distribution Database)
這些事務寄存在分發數據庫中直到被傳送到目的服務器
(
)分發(Distribution)
包含有分發數據庫
分發服務器接受出版服務器的更改事務
並保存到分發數據庫中
在適當的時候
把這些事務送入訂閱服務器
缺省情況下
分發服務器與出版服務器為同一台計算機
當然也可以是不同的計算機
(
)訂閱(Subscription)
接受出版服務器的出版數據
使用專用的SQL Server數據庫作為復制數據的可靠隊列
SQL Server的復制采用
松散一致
復制模式
其特征是源數據與拷貝數據之間並不是在任何時刻都保持完全一致
它們之間有一個延時
源數據庫的變化
不是立刻反應到訂閱數據庫中
而是把產生變化的事務寫入一個專門的分發數據庫中(Distribution)
當這些事務累計到設定值時
由事務分發器(Distribution task)把事務送到訂閱服務器中
訂閱服務器再執行這些事務來保持源數據與拷貝數據的一致
分發數據庫完成了一種緩沖的作用
當因網絡或其他問題使復制不能完成時
源數據的變化會一直保存在分發數據庫中直到問題解決再自動把所有保存的事務送出
並且復制兩端的數據仍保持一致
這種方式使SQL Server數據的復制有極大的自適應性和可靠性
最大限度減少用戶的干預
SQL Server的復制主要組成部分有:日志閱讀(Log Reader)
初始同步(Synchornization)
數據分發(Distribution)和分發數據庫
初始同步是復制真正開始執行的第一步
類似於開始傳送事務前
先給源數據庫照一個快照
把傳送事務前的那一時刻的數據拷貝到訂閱數據庫
其實質就是把那時刻的數據生成BCP文件
通過網絡傳到訂閱數據庫
完成初始同步後
再開始由日志閱讀初始同步以後的事務
並由數據分發過程傳送分發數據庫中的事務到訂閱服務器中去
復制的實現
下面我們結合在西安市國家稅務局內部網絡信息系統的實例
介紹SQL Server
的配置以及其中需要注意的事項
復制前的准備
(
)使用一種字符集
市局和分局的SQL Server的配置使用一種字符集
(
)允許分局服務器有足夠的事務日志空間
(
)最好設置MSSQL Service 和SQLExecutive Service Auto Start at Boot time
復制的安裝
(
)運行Microsoft SQL Enterprise Manage
在Server Manager窗口中選擇源數據服務器
(
)從Server選單選擇Replication Configuration
然後從所出現的子選單選擇Install Publishing
出現Install Replication Publishing 對話框
(
)選擇Local-Install New Local Distribution Database選項(配置該服務器充當自身的分發服務器)
在為分發數據庫建立分發數據庫設備時
要根據源數據的更新率估計分發數據設備的大小
盡量把分發數據庫建大些
設置出版和訂閱服務器和數據庫
在前面的安裝分發數據庫中
如果在詢問是否在本次配置服務器選項對話框中
選擇YES
則出現Replication-Publishing對話框
在Enable Publishin to These Servers(左邊列表)目錄中選擇訂閱的服務器
在本實例中為信息中心的SQL Server
在Publishing Database下(右邊列表)
選擇被允許出版數據的數據庫
回到Server Manager
選擇訂閱服務器
從Server選單選擇Replication Configuration;然後從出現的下拉選單選擇Subscribing
出現Replication-Subscribing對話框
在左側的Publishing Server框中選擇源數據SQL服務器
在右側的框內選擇拷貝的數據庫
復制數據的設置
安裝SQL Server復制並設置復制的服務器和數據庫後
要進行出版物的設置
就是指定復制數據庫中那些表要進行復制
一個出版物可以包括很多表
從Server Manager窗口
選擇源數據服務器
從Manage選單
選擇Replication
然後選擇Publication對話框
選擇
NEW
出現Edit Publications對話框
為該復制數據設置一個名字
選擇要復制的表到右邊的列表
這裡要注意到這樣一個情況
因為我們要從多個源數據庫向一個中心服務器數據庫復制數據
一定要保證源數據之間不會互相影響
復制的表中要有字段定義數據的來源
在Edit Publications對話框
選擇右邊列表中要復制的表
按
Edit
按鈕
進入Manage Article對話框
在最下面的Restriction Clause中輸入標識唯一源數據的條件
在Manage Article對話框中
選擇Scripts標簽
按
Generate
按鈕
出現模式源設置畫面
這裡需要設置初始同步的模式
在多個源數據庫向一個中心數據庫復制數據時
這裡一定要選擇
DELETE DATA Using Restriction Clause
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22250.html