国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > 綜合 > 正文

事務(wù)復(fù)制中的分區(qū)表

2024-07-21 02:49:44
字體:
供稿:網(wǎng)友
事務(wù)復(fù)制中的分區(qū)表

背景

事務(wù)復(fù)制中發(fā)布表有分區(qū)表,如何配置發(fā)布項,使分區(qū)結(jié)構(gòu)傳播到訂閱庫?有何限制?

測試環(huán)境

CodeUSE [master]GOCREATE DATABASE [OMS_Test] ON  PRIMARY ( NAME = N'OMS_Test_data1', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/OMS_Test.mdf' ,   SIZE = 34816KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),  FILEGROUP [FG_OMSTest_1] ( NAME = N'OMS_Test_data2', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/OMS_Test_data2.ndf' ,   SIZE = 475136KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),  FILEGROUP [FG_OMSTest_2] ( NAME = N'OMS_Test_data3', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/OMS_Test_data3.ndf' ,   SIZE = 611328KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ),  FILEGROUP [FG_OMSTest_3] ( NAME = N'OMS_Test_data4', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/OMS_Test_data4.ndf' ,   SIZE = 245760KB , MAXSIZE = UNLIMITED, FILEGROWTH = 1024KB ) LOG ON ( NAME = N'OMS_Test_log', FILENAME = N'C:/Program Files/Microsoft SQL Server/MSSQL10_50.MSSQLSERVER/MSSQL/DATA/OMS_Test_log.ldf' ,   SIZE = 5093952KB , MAXSIZE = 2048GB , FILEGROWTH = 10%)GOuse OMS_Testgocreate  partition function pf_orders_createon(datetime2)as range  right forvalues('20120101','20130101','20140101')gocreate   partition scheme ps_orders_createonas partition pf_orders_createonto ([primary],[FG_OMSTest_1],[FG_OMSTest_2],[FG_OMSTest_3])gocreate  table orders (ID INT IDENTITY(1,1),OrderNumber varchar(20) not null,CreateOn datetime2 not null)on [ps_orders_createon](CreateOn)goalter table orders add constraint PK_Orders_ID_CreateON primary key nonclustered (ID,CREATEON)gocreate clustered index CIX_Orders_CreateOn on Orders(CreateOn)on [ps_orders_createon](CreateOn)go

加載測試數(shù)據(jù)之后的數(shù)據(jù)分布如下:

image

前置條件

  • 如果分區(qū)方案使用的不只是PRIMARY文件組,首先要保證分發(fā)和訂閱具有同樣的文件組。所以我的測試中訂閱庫會添加同樣三個文件組。
  • 在添加分區(qū)表為發(fā)布項時,需要指定Copy table partitioning schemes和Copy index partitioning schemes為True,Copy file group associations也設(shè)定為True。三者的含義就是字面意思。

image

使用分析

1. 滿足“前置條件”建立的事務(wù)復(fù)制,分區(qū)表(包括數(shù)據(jù)、分區(qū)函數(shù)和分區(qū)架構(gòu))成功發(fā)布并傳播到訂閱庫。但是下列命令不會從發(fā)布庫傳播到訂閱庫:

ALTER INDEX 的 ALTER PARTITION FUNCTION、ALTER PARTITION SCHEME 或 REBUILD WITH PARTITION。

在訂閱庫執(zhí)行如下語句,新增的數(shù)據(jù)可以傳播到訂閱庫,但是Partition Function & Scheme的修改沒有傳播到訂閱庫:

Codealter partition scheme ps_orders_createonnext used [PRIMARY]GOalter partition function pf_orders_createon()split range('20140201')GOinsert into dbo.ordersvalues ('140714001074904685','2014-07-15 04:06:19.6600000')GO

需要在訂閱庫執(zhí)行上面的兩個Alter,才能與發(fā)布庫一致。如果使用是非PRIMARY文件組,則還需要在訂閱庫上先增加同樣的文件組。

分割分區(qū)后,發(fā)布和訂閱的數(shù)據(jù)分布是一樣,如下:

image

2. 對事務(wù)復(fù)制中的分區(qū)表啟用PARTITION SWITCH,使得發(fā)布庫PARTITION SWITCH傳播到訂閱庫,需要滿足如下條件

  • 在對訂閱端執(zhí)行Switch前,需要保證訂閱端面也存在需要移入或者移出的表和數(shù)據(jù)。比如將分區(qū)表中的某個分區(qū)切到中間表,而兩者需要存在同樣結(jié)構(gòu)的中間表。
  • 發(fā)布和訂閱庫的分區(qū)表,需要具有同樣的分區(qū)表定義。因為訂閱庫的分區(qū)表可以與發(fā)布庫的定義不一致,但如果需要發(fā)布庫PARTITION SWITCH傳播到訂閱庫,則要一致。
  • 發(fā)布屬性中@allow_partition_switch和@replicate_partition_switch設(shè)定為TRUE。

    前者允許對已發(fā)布的數(shù)據(jù)庫執(zhí)行 ALTER TABLE…SWITCH 語句,后者使得對已發(fā)布的數(shù)據(jù)庫執(zhí)行的 ALTER TABLE…SWITCH 語句傳播到訂閱服務(wù)器。

執(zhí)行如下語句修改發(fā)布屬性并將Partition 4切到臨時表:

CodeUSE [OMS_Test]GO--Set Publication properties for partition switchexec sp_changepublication 'OMSTEST_PUB',N'allow_partition_switch',N'true';exec sp_changepublication 'OMSTEST_PUB',N'replicate_partition_switch','true';go--create table for partition switch outCREATE TABLE [dbo].[orders_Temp]([ID] [int] NOT NULL,[OrderNumber] [varchar](20) NOT NULL,[CreateOn] [datetime2](7) NOT NULL, CONSTRAINT [PK_OrdersTemp_ID_CreateON] PRIMARY KEY NONCLUSTERED ([ID] ASC,[CreateOn] ASC))on [FG_OMSTest_3]GOCREATE CLUSTERED INDEX CIX_OrdersTemp_CreateON on dbo.orders_temp(createon)goALTER TABLE dbo.orders_Temp ADD CONSTRAINTCK_orders_Temp CHECK (CreateOn>='2014-01-01' and CreateOn<'2014-02-01')go--Switch partition 4 to orders_tempALTER TABLE dbo.orders   switch partition 4 to dbo.orders_tempgo

執(zhí)行后,訂閱和發(fā)布的數(shù)據(jù)都成功切出。現(xiàn)在再嘗試加載分區(qū),也就是切回來,結(jié)果也是成功的:



發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 阳春市| 弥勒县| 宁陕县| 西华县| 合江县| 塔河县| 宜黄县| 澳门| 克东县| 盐津县| 连南| 顺平县| 玛沁县| 上林县| 灵宝市| 青河县| 上栗县| 读书| 孟津县| 昌江| 盐边县| 黔江区| 石狮市| 化州市| 从江县| 防城港市| 凭祥市| 台湾省| 吉木萨尔县| 桂平市| 海兴县| 罗江县| 湛江市| 竹北市| 盐城市| 乡宁县| 中卫市| 万年县| 自贡市| 红桥区| 曲靖市|