成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL Server 2000中的數(shù)據(jù)同步問題

運維 數(shù)據(jù)庫運維 SQL Server
在SQL Server 里設(shè)置和使用數(shù)據(jù)庫復制之前,應(yīng)先檢查相關(guān)的幾臺SQL Server服務(wù)器下面幾點是否滿足條件。

1.MS SQL Server和SQL Server agent服務(wù)是否是以域用戶身份啟動并運行的(.\administrator用戶也是可以的)如果登錄用的是本地系統(tǒng)帳戶local,將不具備網(wǎng)絡(luò)功能,會產(chǎn)生以下錯誤: 進程未能連接到Distributor '@Server name' (如果您的服務(wù)器已經(jīng)用了SQL Server全文檢索服務(wù), 請不要修改MSSQLserver和Sqlserveragent服務(wù)的local啟動。會照成全文檢索服務(wù)不能用。請換另外一臺機器來做SQL Server 里復制中的分發(fā)服務(wù)器。)

修改服務(wù)啟動的登錄用戶,需要重新啟動MSSQLserver和Sqlserveragent服務(wù)才能生效。

2、檢查相關(guān)的幾臺SQL Server服務(wù)器是否改過名稱(需要srvid=0的本地機器上srvname和datasource一樣)

在查詢分析器里執(zhí)行: 

use master 
select srvid,srvname,datasource from sysservers

如果沒有srvid=0或者srvid=0(也就是本機器)但srvname和datasource不一樣, 需要按如下方法修改:

USE master 
GO
-- 設(shè)置兩個變量
DECLARE @serverproperty_servername varchar(100),
@servername varchar(100)
-- 取得Windows NT 服務(wù)器和與指定的 SQL Server 實例關(guān)聯(lián)的實例信息
SELECT @serverproperty_servername = CONVERT(varchar(100), SERVERPROPERTY('ServerName'))
-- 返回運行 Microsoft SQL Server 的本地服務(wù)器名稱
SELECT @servername = CONVERT(varchar(100), @@SERVERNAME)
-- 顯示獲取的這兩個參數(shù)
select @serverproperty_servername,@servername
--如果@serverproperty_servername和@servername不同(因為你改過計算機名字),再運行下面的
--刪除錯誤的服務(wù)器名
EXEC sp_dropserver @server=@servername
--添加正確的服務(wù)器名
EXEC sp_addserver @server=@serverproperty_servername, @local='local'

修改這項參數(shù),需要重新啟動MSSQLserver和Sqlserveragent服務(wù)才能生效。

這樣一來就不會在創(chuàng)建復制的過程中出現(xiàn)18482、18483錯誤了。

3、檢查SQL Server企業(yè)管理器里面相關(guān)的幾臺SQL Server注冊名是否和上面第二點里介紹的srvname一樣

不能用IP地址的注冊名。(我們可以刪掉IP地址的注冊,新建以SQL Server管理員級別的用戶注冊的服務(wù)器名)這樣一來就不會在創(chuàng)建復制的過程中出現(xiàn)14010、20084、18456、18482、18483錯誤了。

4、檢查相關(guān)的幾臺SQL Server服務(wù)器網(wǎng)絡(luò)是否能夠正常訪問

如果ping主機IP地址可以,但ping主機名不通的時候,需要在

winnt\system32\drivers\etc\hosts (WIN2000) 
windows\system32\drivers\etc\hosts (WIN2003)

文件里寫入數(shù)據(jù)庫服務(wù)器IP地址和主機名的對應(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ò)實用工具里建立別名

5、系統(tǒng)需要的擴展存儲過程是否存在(如果不存在,需要恢復):

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'

接下來就可以用SQL Server企業(yè)管理器里[復制]-> 右鍵選擇->[配置發(fā)布、訂閱服務(wù)器和分發(fā)]的圖形界面來配置數(shù)據(jù)庫復制了。

下面是按順序列出配置復制的步驟:

一、建立發(fā)布和分發(fā)服務(wù)器 [歡迎使用配置發(fā)布和分發(fā)向?qū)->[選擇分發(fā)服務(wù)器] ->[使"@servername"成為它自己的分發(fā)服務(wù)器,SQL Server將創(chuàng)建分發(fā)數(shù)據(jù)庫和日志] ->[制定快照文件夾]-> [自定義配置] -> [否,使用下列的默認配置] -> [完成]

上述步驟完成后, 會在當前"@servername" SQL Server數(shù)據(jù)庫里建立了一個distribion庫和一個distributor_admin管理員級別的用戶(我們可以任意修改密碼)

服務(wù)器上新增加了四個作業(yè):

[ 代理程序歷史記錄清除: distribution ]

[ 分發(fā)清除: distribution ]

[ 復制代理程序檢查 ]

[ 重新初始化存在數(shù)據(jù)驗證失敗的訂閱 ]

SQL Server企業(yè)管理器里多了一個復制監(jiān)視器, 當前的這臺機器就可以發(fā)布、分發(fā)、訂閱了。

我們再次在SQL Server企業(yè)管理器里[復制]-> 右鍵選擇 ->[配置發(fā)布、訂閱服務(wù)器和分發(fā)]

我們可以在 [發(fā)布服務(wù)器和分發(fā)服務(wù)器的屬性] 窗口-> [發(fā)布服務(wù)器] -> [新增] -> [確定]-> [發(fā)布數(shù)據(jù)庫] -> [事務(wù)]/[合并] -> [確定]-> [訂閱服務(wù)器] -> [新增] -> [確定] 把網(wǎng)絡(luò)上的其它SQL Server服務(wù)器添加成為發(fā)布或者訂閱服務(wù)器.

復制是將一組數(shù)據(jù)從一個數(shù)據(jù)源拷貝到多個數(shù)據(jù)源的技術(shù),是將一份數(shù)據(jù)發(fā)布到多個存儲站點上的有效方式。使用復制技術(shù),用戶可以將一份數(shù)據(jù)發(fā)布到多臺服務(wù)器上,從而使不同的服務(wù)器用戶都可以在權(quán)限的許可的范圍內(nèi)共享這份數(shù)據(jù)。復制技術(shù)可以確保分布在不同地點的數(shù)據(jù)自動同步更新,從而保證數(shù)據(jù)的一致性。

SQL復制的基本元素包括

出版服務(wù)器、訂閱服務(wù)器、分發(fā)服務(wù)器、出版物、文章

SQL復制的工作原理

SQL SERVER 主要采用出版物、訂閱的方式來處理復制。源數(shù)據(jù)所在的服務(wù)器是出版服務(wù)器,負責發(fā)表數(shù)據(jù)。出版服務(wù)器把要發(fā)表的數(shù)據(jù)的所有改變情況的拷貝復制到分發(fā)服務(wù)器,分發(fā)服務(wù)器包含有一個分發(fā)數(shù)據(jù)庫,可接收數(shù)據(jù)的所有改變,并保存這些改變,再把這些改變分發(fā)給訂閱服務(wù)器

SQL SERVER復制技術(shù)類型

SQL SERVER提供了三種復制技術(shù),分別是:

1、快照復制(呆會我們就使用這個)

2、事務(wù)復制

3、合并復制

只要把上面這些概念弄清楚了那么對復制也就有了一定的理解。接下來我們就一步一步來實現(xiàn)復制的步驟。

第一先來配置出版服務(wù)器

(1)選中指定[服務(wù)器]節(jié)點

(2)從[工具]下拉菜單的[復制]子菜單中選擇[發(fā)布、訂閱服務(wù)器和分發(fā)]命令

(3)系統(tǒng)彈出一個對話框點[下一步]然后看著提示一直操作到完成。

(4)當完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會為該服務(wù)器的樹形結(jié)構(gòu)中添加一個復制監(jiān)視器。同時也生成一個分發(fā)數(shù)據(jù)庫(distribution)

第二創(chuàng)建出版物

(1)選中指定的服務(wù)器

(2)從[工具]菜單的[復制]子菜單中選擇[創(chuàng)建和管理發(fā)布]命令。此時系統(tǒng)會彈出一個對話框

(3)選擇要創(chuàng)建出版物的數(shù)據(jù)庫,然后單擊[創(chuàng)建發(fā)布]

(4)在[創(chuàng)建發(fā)布向?qū)的提示對話框中單擊[下一步]系統(tǒng)就會彈出一個對話框。對話框上的內(nèi)容是復制的三個類型。我們現(xiàn)在選第一個也就是默認的快照發(fā)布(其他兩個大家可以去看看幫助)

(5)單擊[下一步]系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫服務(wù)器類型,SQLSERVER允許在不同的數(shù)據(jù)庫如 ORACLE或ACCESS之間進行數(shù)據(jù)復制。但是在這里我們選擇運行"SQL SERVER 2000"的數(shù)據(jù)庫服務(wù)器

(6)單擊[下一步]系統(tǒng)就彈出一個定義文章的對話框也就是選擇要出版的表

(7)然后[下一步]直到操作完成。當完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫也就變成了一個共享數(shù)據(jù)庫。

第三設(shè)計訂閱

(1)選中指定的訂閱服務(wù)器

(2)從[工具]下拉菜單中選擇[復制]子菜單的[請求訂閱]

(3)按照單擊[下一步]操作直到系統(tǒng)會提示檢查SQL SERVER代理服務(wù)的運行狀態(tài),執(zhí)行復制操作的前提條件是SQL SERVER代理服務(wù)必須已經(jīng)啟動。

(4)單擊[完成]。完成訂閱操作。

完成上面的步驟其實復制也就是成功了。但是如何來知道復制是否成功了呢?這里可以通過這種方法來快速看是否成功。展開出版服務(wù)器下面的復制——發(fā)布內(nèi)容——右鍵發(fā)布內(nèi)容——屬性——擊活——狀態(tài)然后點立即運行代理程序接著點代理程序?qū)傩該艋钫{(diào)度把調(diào)度設(shè)置為每一天發(fā)生,每一分鐘,在0:00:00和23:59:59之間。接下來就是判斷復制是否成功了打開C:\Program Files\Microsoft SQL Server\MSSQL\REPLDATA\unc\XIAOWANGZI_database_database下面看是不是有一些以時間做為文件名的文件夾差不多一分中就產(chǎn)生一個。要是你還不信的話就打開你的數(shù)據(jù)庫看在訂閱的服務(wù)器的指定訂閱數(shù)據(jù)庫下看是不是看到了你剛才所發(fā)布的表— 一個手工

同步的方案

--定時同步服務(wù)器上的數(shù)據(jù)

--例子:

--測試環(huán)境,SQL Server,遠程服務(wù)器名:xz,用戶名為:sa,無密碼,測試數(shù)據(jù)庫:test

--服務(wù)器上的表(查詢分析器連接到服務(wù)器上創(chuàng)建)

create table [user](id int primary key,number varchar(4),name varchar(10))
go
--以下在局域網(wǎng)(本機操作)
--本機的表,state說明:null 表示新增記錄,1 表示修改過的記錄,0 表示無變化的記錄
if exists (select * from dbo.sysobjects where id = object_id(N'[user]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [user]
GO
create table [user](id int identity(1,1),number varchar(4),name varchar(10),state bit)
go
--創(chuàng)建觸發(fā)器,維護state字段的值
create trigger t_state on [user]
after update
as
update [user] set state=1
from [user] a join inserted b on a.id=b.id
where a.state is not null
go
--為了方便同步處理,創(chuàng)建鏈接服務(wù)器到要同步的服務(wù)器
--這里的遠程服務(wù)器名為:xz,用戶名為:sa,無密碼
if exists(select 1 from master..sysservers where srvname='srv_lnk')
exec sp_dropserver 'srv_lnk','droplogins'
go
exec sp_addlinkedserver 'srv_lnk','','SQLOLEDB','xz'
exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'sa'
go
--創(chuàng)建同步處理的存儲過程
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[p_synchro]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[p_synchro]
GO
create proc p_synchro
as
--set XACT_ABORT on
--啟動遠程服務(wù)器的MSDTC服務(wù)
--exec master..xp_cmdshell 'isql /S"xz" /U"sa" /P"" /q"exec master..xp_cmdshell ''net start msdtc'',no_output"',no_output
--啟動本機的MSDTC服務(wù)
--exec master..xp_cmdshell 'net start msdtc',no_output
--進行分布事務(wù)處理,如果表用標識列做主鍵,用下面的方法
--BEGIN DISTRIBUTED TRANSACTION
--同步刪除的數(shù)據(jù)
delete from srv_lnk.test.dbo.[user]
where id not in(select id from [user])
--同步新增的數(shù)據(jù)
insert into srv_lnk.test.dbo.[user]
select id,number,name from [user] where state is null
--同步修改的數(shù)據(jù)
update srv_lnk.test.dbo.[user] set
number=b.number,name=b.name
from srv_lnk.test.dbo.[user] a
join [user] b on a.id=b.id
where b.state=1
--同步后更新本機的標志
update [user] set state=0 where isnull(state,1)=1
--COMMIT TRAN
go
--創(chuàng)建作業(yè),定時執(zhí)行數(shù)據(jù)同步的存儲過程
if exists(SELECT 1 from msdb..sysjobs where name='數(shù)據(jù)處理')
EXECUTE msdb.dbo.sp_delete_job @job_name='數(shù)據(jù)處理'
exec msdb..sp_add_job @job_name='數(shù)據(jù)處理'
--創(chuàng)建作業(yè)步驟
declare @sql varchar(800),@dbname varchar(250)
select @sql='exec p_synchro' --數(shù)據(jù)處理的命令
,@dbname=db_name() --執(zhí)行數(shù)據(jù)處理的數(shù)據(jù)庫名
exec msdb..sp_add_jobstep @job_name='數(shù)據(jù)處理',
@step_name = '數(shù)據(jù)同步',
@subsystem = 'TSQL',
@database_name=@dbname,
@command = @sql,
@retry_attempts = 5, --重試次數(shù)
@retry_interval = 5 --重試間隔
--創(chuàng)建調(diào)度
EXEC msdb..sp_add_jobschedule @job_name = '數(shù)據(jù)處理',
@name = '時間安排',
@freq_type = 4, --每天
@freq_interval = 1, --每天執(zhí)行一次
@active_start_time = 00000 --0點執(zhí)行
go

【編輯推薦】

  1. MS SQL Server和MySQL區(qū)別
  2. 小議SQL Server主鍵和自動編號問題
  3. SQL Server通過代碼執(zhí)行代理任務(wù)
責任編輯:彭凡 來源: cnblogs
相關(guān)推薦

2010-07-08 15:55:25

SQL Server

2010-11-10 15:23:55

SQL SERVER

2010-07-01 17:08:26

2010-07-05 14:11:07

SQL Server

2011-04-06 13:14:29

SQL Server 安裝

2010-07-23 09:15:08

安裝SQL Serve

2010-07-26 13:33:28

SQL Server

2011-03-23 10:08:09

2011-04-06 17:30:41

SQL ServerSQL

2010-07-23 14:11:18

SQL Server

2010-06-17 17:11:03

SQL Server

2010-06-18 13:14:26

SQL Server

2017-05-25 08:52:08

SQL Server數(shù)據(jù)庫

2010-07-23 13:33:00

SQL Server

2010-07-26 14:09:32

SQL Server

2010-07-15 10:48:48

SQL Server2

2011-04-02 16:20:21

SQL SERVER 同步復制

2010-07-05 14:04:00

SQL Server

2010-07-16 13:14:39

SQL Server

2010-07-02 14:20:30

SQL Server2
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 午夜三区 | 日韩视频 中文字幕 | 久久日韩精品一区二区三区 | 日韩成人精品在线 | 国产人成精品一区二区三 | 欧美在线国产精品 | 国产一区久久久 | 成人av网站在线观看 | 99成人在线视频 | 日韩精品视频一区二区三区 | 亚洲一区二区三区四区五区午夜 | 91污在线 | 免费亚洲网站 | 中文字幕在线观看视频网站 | 黄网站在线播放 | 久久久久久国产精品免费免费狐狸 | 国产资源一区二区三区 | 欧美一区二 | 国产一区二区高清在线 | 久久国产精品久久久久久久久久 | 在线欧美视频 | 亚洲一区二区三区免费在线观看 | 国产成人精品一区二区三区四区 | 6080亚洲精品一区二区 | 免费毛片www com cn | 狠狠草视频 | 亚洲精品国产偷自在线观看 | 一区在线播放 | 欧美一级久久 | 久久精品二区亚洲w码 | 亚洲高清在线观看 | 中文字幕国产高清 | 精品国产乱码久久久久久图片 | 欧美国产日韩在线观看 | 日韩久久精品电影 | www.久久久久久久久久久 | 影视一区| 日批av| 欧美6一10sex性hd | 欧美 日韩 亚洲91麻豆精品 | av成年人网站 |