SQL Server 2016数据库快照代理过程详解

2019-03-13 15:12 月下刀客 未知
  本文我们通过SQL Server 2016一个实例数据表,给大家详细分析了快照代理过程遇到的问题和解决办法,并对快照生成过程做了详细说明,以下是全部内容:

  概述

  快照代理准备已发布表的架构和初始数据文件以及其他对象、存储快照文件并记录分发数据库中的同步信息。 快照代理在分发服务器上运行;SQLServer2016版本对快照代理做了一些比较好的优化,接下来详细了解一下快照的执行过程。

一、快照代理文件

  在执行快照作业是会在指定的快照目录生成4种类型的文件。

  BCP文件:发布对象的数据文件。

  IDX文件:索引创建脚本文件

  PRE文件:复制快照脚本文件。

  SCH文件:架构创建脚本文件

二、默认快照代理配置文件

  -BcpBachSize:每一次执行bcp操作copy的最大记录行数,默认是10万行。

  -HistoryVerboseLevel:指定在快照操作过程中记录的历史记录大小。

  -LoginTimeout:登录超时前等待的秒数。 默认值为 15 秒。

  -QueryTimeOut:查询超时前等待的秒数。默认值为 1800 秒

  备注:通过右键快照代理-快照代理配置文件;可以配置快照代理。

三、对比不同版本快照代理

  接下来测试对比2亿的记录表生成快照

  1.bcp文件数量对比

  2008R2

  2016SP1

  这里重点说一下BCP文件,因为应用快照到订阅服务器是以BCP文件为基本单位,也就是说不管你的BCP文件有多大都是一次性bulk到订阅服务器,所以BCP文件越大每次应用的时间就会越长。如果一个BCP文件太大可能会导致插入到订阅端失败。

  从上图可以看到同样是2亿的记录,2008R2总共有8个BCP文件,而且最大的BCP文件大小将近1G其它的都才几兆;2016有16个BCP文件,并且前15个都是50M左右数据比较均匀。接下来看下图的每个BCP文件的记录对比。

  2.快照生成详细过程对比

  2008r2

  2016SP1

  从生成的BCP文件记录对比来看:

收藏 举报

延伸 · 阅读