程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server如何通過備份文件初始化復制

SQL Server如何通過備份文件初始化復制

編輯:關於SqlServer

一、背景

MySQL在對有歷史數據的數據庫進行搭建復制(Master/Slave)的時候,可以通過在Master服務器備份歷史數據,利用這個備份文件在Slave進行還原;這樣做的好處是可以更加快速的搭建好環境,因為可以對備份文件進行壓縮、分包,並且可以使用FTP等工具保證傳輸過程的安全與快捷;詳情可參考:Windows下搭建MySQL Master Slave

當SQL Server遇到同樣需要對歷史數據庫搭建復制,通常的做法是在本地發布快照,再由訂閱傳輸數據,那SQL Server應該如何實現備份歷史數據搭建復制(發布/訂閱)呢?下圖是備份文件初始化訂閱的基本邏輯結構圖:

(Figure0:備份文件初始化訂閱邏輯結構圖)

二、搭建過程

(一) 環境信息

系統環境:Windows Server 2008 + SQL Server 2008

發布服務器:192.168.1.105,服務器名稱:QuZhoushiwei105

分發服務器:與發布服務器同一台機器

訂閱服務器:192.168.1.106,服務器名稱:QuZhoushiwei106

發布數據庫:Barfoo.TestPublish

訂閱數據庫:Barfoo.TestSubscribe

數據庫帳號:ReplicationUser/ ReplicationPassword

說明:發布服務器與訂閱服務器是在同一內網的機器,如果你的環境是跨網段(跨機房)的請參考:SQL Server復制(發布訂閱)實戰二:跨網段(跨機房)部署

(二) 搭建步驟

1) 在發布服務器上以QuZhoushiwei105服務器名稱登陸發布服務器,如果你以localhost或者IP形式登陸服務器,在創建發布的時候會出現下圖Figure1的錯誤信息;

(Figure1:錯誤信息)

登陸服務器之後使用下面的SQL腳本創建一個測試數據庫:Barfoo.TestPublish,創建一個測試表:UserInfo,並插入一條數據,用於模擬歷史數據;

--創建測試數據庫
USE MASTER
GO
CREATE DATABASE [Barfoo.TestPublish]
GO
    
--創建測試表
USE [Barfoo.TestPublish]
GO
CREATE TABLE [dbo].[UserInfo](
    [Id] [int] IDENTITY(1,1) NOT FOR REPLICATION NOT NULL,
    [names] [nvarchar](50) NULL,
    [address] [nvarchar](50) NULL,
 CONSTRAINT [PK_UserInfo] PRIMARY KEY CLUSTERED 
(
    [Id] ASC
) ON [PRIMARY]
) ON [PRIMARY]
GO
    
--插入測試數據
INSERT [dbo].[UserInfo] ([names],[address]) VALUES (N'gaizai', N'廣州')

(Figure2:UserInfo表記錄)

2) 在發布數據庫和訂閱服務器上分別執行下面的SQL腳本創建帳號和密碼(ReplicationUser/ ReplicationPassword);

--發布服務器創建帳號密碼
USE [master]
GO
CREATE LOGIN [ReplicationUser] WITH PASSWORD=N'ReplicationPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
EXEC master..sp_addsrvrolemember @loginame = N'ReplicationUser', @rolename = N'sysadmin'
GO
USE [Barfoo.TestPublish]
GO
CREATE USER [ReplicationUser] FOR LOGIN [ReplicationUser]
GO
USE [Barfoo.TestPublish]
GO
ALTER USER [ReplicationUser] WITH DEFAULT_SCHEMA=[dbo]
GO
    
--訂閱服務器創建帳號密碼
USE [master]
GO
CREATE LOGIN [ReplicationUser] WITH PASSWORD=N'ReplicationPassword', DEFAULT_DATABASE=[master], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
GO
EXEC master..sp_addsrvrolemember @loginame = N'ReplicationUser', @rolename = N'sysadmin'
GO

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved