在兩個(gè)SQLSERVER之間實(shí)現(xiàn)數(shù)據(jù)同步:
創(chuàng)新互聯(lián)客戶idc服務(wù)中心,提供西云機(jī)房、成都服務(wù)器、成都主機(jī)托管、成都雙線服務(wù)器等業(yè)務(wù)的一站式服務(wù)。通過(guò)各地的服務(wù)中心,我們向成都用戶提供優(yōu)質(zhì)廉價(jià)的產(chǎn)品以及開放、透明、穩(wěn)定、高性價(jià)比的服務(wù),資深網(wǎng)絡(luò)工程師在機(jī)房提供7*24小時(shí)標(biāo)準(zhǔn)級(jí)技術(shù)保障。
第一先來(lái)配置出版服務(wù)器
(1)選中指定[服務(wù)器]節(jié)點(diǎn)
(2)從[工具]下拉菜單的[復(fù)制]子菜單中選擇[發(fā)布、訂閱服務(wù)器和分發(fā)]命令
(3)系統(tǒng)彈出一個(gè)對(duì)話框點(diǎn)[下一步]然后看著提示一直操作到完成。
(4)當(dāng)完成了出版服務(wù)器的設(shè)置以后系統(tǒng)會(huì)為該服務(wù)器的樹形結(jié)構(gòu)中添加一個(gè)復(fù)制監(jiān)視器。同時(shí)也生成一個(gè)分發(fā)數(shù)據(jù)庫(kù)(distribution)
第二創(chuàng)建出版物
(1)選中指定的服務(wù)器
(2)從[工具]菜單的[復(fù)制]子菜單中選擇[創(chuàng)建和管理發(fā)布]命令。此時(shí)系統(tǒng)會(huì)彈出一個(gè)對(duì)話框
(3)選擇要?jiǎng)?chuàng)建出版物的數(shù)據(jù)庫(kù),然后單擊[創(chuàng)建發(fā)布]
(4)在[創(chuàng)建發(fā)布向?qū)的提示對(duì)話框中單擊[下一步]系統(tǒng)就會(huì)彈出一個(gè)對(duì)話框。對(duì)話框上的內(nèi)容是復(fù)制的三個(gè)類型。我們現(xiàn)在選第一個(gè)也就是默認(rèn)的快照發(fā)布(其他兩個(gè)大家可以去看看幫助)
(5)單擊[下一步]系統(tǒng)要求指定可以訂閱該發(fā)布的數(shù)據(jù)庫(kù)服務(wù)器類型,SQLSERVER允許在不同的數(shù)據(jù)庫(kù)如 ORACLE或ACCESS之間進(jìn)行數(shù)據(jù)復(fù)制。但是在這里我們選擇運(yùn)行"SQL SERVER 2000"的數(shù)據(jù)庫(kù)服務(wù)器
(6)單擊[下一步]系統(tǒng)就彈出一個(gè)定義文章的對(duì)話框也就是選擇要出版的表
(7)然后[下一步]直到操作完成。當(dāng)完成出版物的創(chuàng)建后創(chuàng)建出版物的數(shù)據(jù)庫(kù)也就變成了一個(gè)共享數(shù)據(jù)庫(kù)。
第三設(shè)計(jì)訂閱
(1)選中指定的訂閱服務(wù)器
(2)從[工具]下拉菜單中選擇[復(fù)制]子菜單的[請(qǐng)求訂閱]
(3)按照單擊[下一步]操作直到系統(tǒng)會(huì)提示檢查SQL SERVER代理服務(wù)的運(yùn)行狀態(tài),執(zhí)行復(fù)制操作的前提條件是SQL SERVER代理服務(wù)必須已經(jīng)啟動(dòng)。
(4)單擊[完成]。
分別架在兩個(gè)不同的機(jī)房,要實(shí)現(xiàn)所有表中數(shù)據(jù)的同步,延時(shí)一兩分鐘沒(méi)關(guān)系,數(shù)據(jù)庫(kù)數(shù)據(jù)量很大,表大概有不到一百個(gè)吧
可以使用跟蹤令牌, 具體的參考聯(lián)機(jī)幫助上的說(shuō)明:
為事務(wù)復(fù)制測(cè)量滯后時(shí)間和驗(yàn)證連接
從日志回復(fù)數(shù)據(jù)庫(kù) :自己一步一步按照說(shuō)明試著看
--創(chuàng)建測(cè)試數(shù)據(jù)庫(kù)
CREATE DATABASE Db
GO
--對(duì)數(shù)據(jù)庫(kù)進(jìn)行備份
BACKUP DATABASE Db TO DISK='c:\db.bak' WITH FORMAT
GO
--創(chuàng)建測(cè)試表
CREATE TABLE Db.dbo.TB_test(ID int)
--延時(shí)1秒鐘,再進(jìn)行后面的操作(這是由于SQL Server的時(shí)間精度最大為百分之三秒,不延時(shí)的話,可能會(huì)導(dǎo)致還原到時(shí)間點(diǎn)的操作失敗)
WAITFOR DELAY '00:00:01'
GO
--假設(shè)我們現(xiàn)在誤操作刪除了 Db.dbo.TB_test 這個(gè)表
DROP TABLE Db.dbo.TB_test
--保存刪除表的時(shí)間
SELECT dt=GETDATE() INTO #
GO
--在刪除操作后,發(fā)現(xiàn)不應(yīng)該刪除表 Db.dbo.TB_test
--下面演示了如何恢復(fù)這個(gè)誤刪除的表 Db.dbo.TB_test
--首先,備份事務(wù)日志(使用事務(wù)日志才能還原到指定的時(shí)間點(diǎn))
BACKUP LOG Db TO DISK='c:\db_log.bak' WITH FORMAT
GO
--接下來(lái),我們要先還原完全備份(還原日志必須在還原完全備份的基礎(chǔ)上進(jìn)行)
RESTORE DATABASE Db FROM DISK='c:\db.bak' WITH REPLACE,NORECOVERY
GO
--將事務(wù)日志還原到刪除操作前(這里的時(shí)間對(duì)應(yīng)上面的刪除時(shí)間,并比刪除時(shí)間略早
DECLARE @dt datetime
SELECT @dt=DATEADD(ms,-20,dt) FROM # --獲取比表被刪除的時(shí)間略早的時(shí)間
RESTORE LOG Db FROM DISK='c:\db_log.bak' WITH RECOVERY,STOPAT=@dt
GO
--查詢一下,看表是否恢復(fù)
SELECT * FROM Db.dbo.TB_test
/*--結(jié)果:
ID
-----------
(所影響的行數(shù)為 0 行)
--*/
--測(cè)試成功
GO
--最后刪除我們做的測(cè)試環(huán)境
DROP DATABASE Db
DROP TABLE #
SQL有定時(shí)執(zhí)行的語(yǔ)句WaitFor。
語(yǔ)法格式:waitfor {delay 'time'|time 'time'}
delay后面的時(shí)間是需要延遲多長(zhǎng)時(shí)間后執(zhí)行。
time后面的時(shí)間是指定何時(shí)執(zhí)行,格式為'HH:MM:SS',不支持日期
例:
--指定10:00執(zhí)行
Begin
waitfor time '10:00'
select * from tablename
end
--指定等待1小時(shí)后執(zhí)行
begin
waitfor delay '1:00'
select * from tablename
end
--指定等待毫秒級(jí)別后執(zhí)行
waitfor delay '0:0:0.01'
邏輯沒(méi)有問(wèn)題,可能效率有問(wèn)題
但是我想set timeout是有必要的,畢竟是internet的使用,可能我想問(wèn)題主要出在網(wǎng)絡(luò)上。