SQL Server 2016快照代理过程详解
本文给大家详细分析了SQL Server 2016 快照代理过程,并实例分析了其中需要注意的地方,跟着小编一下学习下吧。我们将通过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文件记录对比来看:
2008R2:前7个文件每个文件记录数大概70万左右,最后一个文件记录1.1亿。
2016:前15个文件每个文件记录700万左右,最后一个文件78万。
说明:
2008R2前7个文件每个文件大概存储的记录量是70万剩下的记录都会存储到最后一个文件,所以2008R2比较适合的表记录数是600万左右。
2016前15个文件每个文件大概存储的记录量是700万剩下的记录都会存储到最后一个文件,2016适合的表记录数1.2亿左右。
共同缺点:表记录超过“适合的复制表记录数”后剩下数据会全部存储到最后个bcp文件中。
3.分发对比
接下来看一下分发的详细过程
从2008R2分发记录过程中可以看到每次BULK都是以bcp文件为单位,复制最后一个bcp文件花费了大概22分钟,而前面的每个文件都是十几秒;还是由于我当前的表只有三个字段而且除了主键没有索引否则的时间就更长了。
四、快照生成过程
复制快照代理是一个可执行文件,用于准备快照文件(其中包含已发布表和数据库对象的架构及数据),然后将这些文件存储在快照文件夹中,并在分发数据库中记录同步作业。
从上图可以了解整个快照的生成过程。
五、语法
snapshot [ -?] -Publisher server_name[\instance_name] -Publication publication_name [-70Subscribers] [-BcpBatchSize bcp_batch_size] [-DefinitionFile def_path_and_file_name] [-Distributor server_name[\instance_name]] [-DistributorDeadlockPriority [-1|0|1] ] [-DistributorLogin distributor_login] [-DistributorPassword distributor_password] [-DistributorSecurityMode [0|1] ] [-DynamicFilterHostName dynamic_filter_host_name] [-DynamicFilterLogin dynamic_filter_login] [-DynamicSnapshotLocation dynamic_snapshot_location] [-EncryptionLevel [0|1|2]] [-FieldDelimiter field_delimiter] [-HistoryVerboseLevel [0|1|2|3] ] [-HRBcpBlocks number_of_blocks ] [-HRBcpBlockSize block_size ] [-HRBcpDynamicBlocks ] [-KeepAliveMessageInterval keep_alive_interval] [-LoginTimeOut login_time_out_seconds] [-MaxBcpThreads number_of_threads ] [-MaxNetworkOptimization [0|1]] [-Output output_path_and_file_name] [-OutputVerboseLevel [0|1|2] ] [-PacketSize packet_size] [-ProfileName profile_name] [-PublisherDB publisher_database] [-PublisherDeadlockPriority [-1|0|1] ] [-PublisherFailoverPartner server_name[\instance_name] ] [-PublisherLogin publisher_login] [-PublisherPassword publisher_password] [-PublisherSecurityMode [0|1] ] [-QueryTimeOut query_time_out_seconds] [-ReplicationType [1|2] ] [-RowDelimiter row_delimiter] [-StartQueueTimeout start_queue_timeout_seconds] [-UsePerArticleContentsView use_per_article_contents_view]
参数
-?
输出所有可用的参数。
-Publisher server_name[\instance_name]
发布服务器的名称。 为该服务器上的 Microsoft SQL Server 默认实例指定 server_name。 为该服务器上的 server_name\instance_name instance_name SQL Server 默认实例指定 server_name。
-Publication 发布
发布的名称。 只有将发布设置为总是使快照可用于新订阅或重新初始化的订阅时,此参数才有效。
-70Subscribers
如果有任何订阅服务器在运行 SQL Server 7.0 版,则必须使用此参数。
-BcpBatchSize bcp batch\ size
在一次大容量复制操作中发送的行数。 执行 bcp in 操作时,批的大小为要作为一个事务发送到服务器的行数,并且也是分发代理记录 bcp 进度消息之前必须发送的行数。 当执行 bcp out 操作时,将使用固定批大小 1000。 值为 0 表示不记录任何消息。
-DefinitionFile def_path_and_file_name
代理定义文件的路径。 代理定义文件中包含该代理的命令行参数。 文件的内容被当作可执行文件进行分析。 使用双引号 (") 指定包含任意字符的参数值。
-Distributor server_name[\instance_name]
分发服务器名称。 为该服务器上的 默认实例指定 server_name SQL Server 。 为该服务器上的 server_name\instance_name instance_name SQL Server 默认实例指定 server_name。
-DistributorDeadlockPriority [-1|0|1]
死锁发生时快照代理连接到分发服务器的优先级。 指定此参数是为了解决快照生成期间在快照代理和用户应用程序之间发生的死锁问题。
DistributorDeadlockPriority 值
说明
-1
在分发服务器上发生死锁时,应用程序而非快照代理优先。
0 (默认值)
未分配优先级。
1
在分发服务器上发生死锁时,快照代理优先。
-DistributorLogin distributor_login
使用 SQL Server 身份验证连接到分发服务器时所用的登录名。
-DistributorPassword distributor_password
使用 SQL Server 身份验证连接到分发服务器时使用的密码。 。
-DistributorSecurityMode [ 0| 1]
指定分发服务器的安全模式。 值 0 指示 SQL Server 身份验证模式(默认设置),值 1 指示 Windows 身份验证模式。
-DynamicFilterHostName dynamic_filter_host_name
在创建动态快照时,用来为筛选中的 HOST_NAME (Transact-SQL) 设置值。 例如,如果为项目指定了子集筛选器子句 rep_id = HOST_NAME() ,并且在调用合并代理之前将 DynamicFilterHostName 属性设置为“FBJones”,则只会复制 rep_id 列中具有“FBJones”的行。
-DynamicFilterLogin dynamic_filter_login
在创建动态快照时,用来为筛选中的 SUSER_SNAME (Transact-SQL) 设置值。 例如,如果为项目指定了子集筛选器子句 user_id = SUSER_SNAME() ,并且在调用 SQLSnapshot 对象的 Run 方法之前将 DynamicFilterLogin 属性设置为“rsmith”,则只将 user_id 列中具有“rsmith”的行包括在快照中。
-DynamicSnapshotLocation dynamic_snapshot_location
应生成动态快照的位置。
-EncryptionLevel [ 0 | 1 | 2 ]
建立连接时快照代理使用的安全套接字层 (SSL) 加密的等级。
EncryptionLevel 值
说明
0
指定不使用 SSL。
1
指定使用 SSL,但是代理不验证 SSL 服务器证书是否已由可信的颁发者进行签名。
2
指定使用 SSL,并验证证书。
-FieldDelimiter field_delimiter
在 SQL Server 大容量复制数据文件中用于标记字段末尾的字符或字符序列。 默认值为 \n
-HistoryVerboseLevel [ 1| 2| 3]
指定在快照操作过程中记录的历史记录大小。 选择 1可将历史日志记录对性能的影响减至最小。
HistoryVerboseLevel 值
说明
0
进度消息将写入控制台或输出文件。 不在分发数据库中记录历史记录。
1
总是更新具有相同状态(启动、进行中、成功等)的上一历史记录消息。 如果不存在状态相同的上一记录,将插入新记录。
2 (默认值)
除非记录为空闲消息或长时间运行的作业消息等信息(此时将更新上一记录),否则插入新的历史记录。
3
始终插入新记录,除非它与空闲消息有关。
-HRBcpBlocks number_of_blocks
在编写器线程和读取器线程之间排队的 bcp 数据块的数量。 默认值为 50。 HRBcpBlocks 仅用于 Oracle 发布。
备注
此参数用于通过 Oracle 发布服务器优化 bcp 的性能。
-HRBcpBlockSizeblock_size
每个 bcp 数据块的大小(以 KB 为单位)。 默认值为 64 KB。 HRBcpBlocks 仅用于 Oracle 发布。
备注
此参数用于通过 Oracle 发布服务器优化 bcp 的性能。
-HRBcpDynamicBlocks
每个 bcp 数据块的大小是否可以动态增长。 HRBcpBlocks 仅用于 Oracle 发布。
备注
此参数用于通过 Oracle 发布服务器优化 bcp 的性能。
-KeepAliveMessageInterval keep_alive_interval
快照代理在向 MSsnapshot_history 表中记录“waiting for backend message”之前等待的时间(以秒为单位)。 默认值为 300 秒。
-LoginTimeOut login_time_out_seconds
登录超时前等待的秒数。 默认值为 15 秒。
-MaxBcpThreads number_of_threads
指定可以并行执行的大容量复制操作的数量。 同时存在的线程和 ODBC 连接的最大数量为 MaxBcpThreads 或显示在分发数据库中同步事务中的大容量复制请求数中较小的那一个。 MaxBcpThreads 的值必须大于 0 ,并且不存在任何硬编码的上限。 默认值为 1。
- MaxNetworkOptimization [ 0| 1]
是否将无关删除操作发送到订阅服务器。 无关删除操作是针对不属于订阅服务器分区的行发送到订阅服务器的 DELETE 命令。 无关删除操作不会影响数据的完整性或收敛,但它们会导致不必要的网络通信。 MaxNetworkOptimization 的默认值是 0。 将 MaxNetworkOptimization 设置为 1 可将不相关的删除操作发生的机会减至最小,从而减少网络通信,并最大程度地优化网络。如果存在多个级别的联接筛选器和复杂子集筛选器,则将此参数设置为 1 还会增加元数据的存储并导致发布服务器性能下降。 您应仔细评估您的复制拓扑,仅当无关删除操作导致的网络通信高到无法接受时才应将 MaxNetworkOptimization 设置为 1 。
备注
仅当合并发布的同步优化选项(sp_addmergepublication (Transact-SQL) 的 @keep_partition_changes 参数)设置为 true 时,将此参数设置为 1 才是有用的。
-Output output_path_and_file_name
代理输出文件的路径。 如果未提供文件名,则向控制台发送该输出。 如果指定的文件名已存在,会将输出追加到该文件。
-OutputVerboseLevel [ 0| 1| 2]
指定输出是否应提供详细内容。
OutputVerboseLevel 值
说明
0
仅输出错误消息。
1 (默认值)
输出所有进度报告消息(默认值)。
2
输出所有错误消息和进度报告消息,这对于调试很有用。
-PacketSize packet_size
快照代理连接到 SQL Server时使用的数据包大小(以字节为单位)。 默认值为 8192 字节。
备注
除非您确信能够提高性能,否则不要更改数据包的大小。 对于大多数应用程序而言,默认数据包大小为最佳数值。
-ProfileName profile_name
指定用于代理参数的代理配置文件。 如果 ProfileName 为 NULL,则将禁用代理配置文件。 如果未指定 ProfileName ,则使用该代理类型的默认配置文件。
-PublisherDB publisher_database
发布数据库的名称。 Oracle 发布服务器不支持该参数。
-PublisherDeadlockPriority [-1|0|1]
死锁发生时快照代理连接到发布服务器的优先级。 指定此参数是为了解决快照生成期间在快照代理和用户应用程序之间发生的死锁问题。
PublisherDeadlockPriority 值
说明
-1
在发布服务器上发生死锁时,应用程序而非快照代理优先。
0 (默认值)
未分配优先级。
1
在发布服务器上发生死锁时,快照代理优先。
-PublisherFailoverPartner server_name[\instance_name]
指定参加与发布数据库进行的数据库镜像会话的 SQL Server 故障转移伙伴实例。
-PublisherLogin publisher_login
使用 SQL Server 身份验证连接到发布服务器时所用的登录名。
-PublisherPassword publisher_password
使用 SQL Server 身份验证连接到发布服务器时使用的密码。 。
-PublisherSecurityMode [ 0| 1]
指定发布服务器的安全模式。 值 0 指示 SQL Server 身份验证(默认值),值 1 指示 Windows 身份验证模式。
-QueryTimeOut query_time_out_seconds
查询超时前等待的秒数。默认值为 1800 秒。
-ReplicationType [ 1| 2]
指定复制的类型。 值 1 指示事务复制,值 2 指示合并复制。
-RowDelimiter row_delimiter
在 SQL Server 大容量复制数据文件中用于标记行尾的字符或字符序列。 默认值为 \n<,@g>\n。
-StartQueueTimeout start_queue_timeout_seconds
当运行的并发动态快照进程数达到由 sp_addmergepublication (Transact-SQL) 的 @max_concurrent_dynamic_snapshots 属性设置的限制值时,快照代理等待的最大秒数。 如果在经过最大秒数之后快照代理仍在等待,快照代理将退出。 值 0 表示代理将无限期地等待,尽管可以将其取消。
- UsePerArticleContentsView use_per_article_contents_view
已不推荐使用此参数,支持它是为了能够向后兼容。
以上是SQL Server 2016快照代理过程详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

WindowsServerBackup是WindowsServer操作系统自带的一个功能,旨在帮助用户保护重要数据和系统配置,并为中小型和企业级企业提供完整的备份和恢复解决方案。只有运行Server2022及更高版本的用户才能使用这一功能。在本文中,我们将介绍如何安装、卸载或重置WindowsServerBackup。如何重置Windows服务器备份如果您的服务器备份遇到问题,备份所需时间过长,或无法访问已存储的文件,那么您可以考虑重新设置WindowsServer备份设置。要重置Windows

在发布WindowsServer的build26040版本之际,微软公布了该产品的官方名称:WindowsServer2025。一同推出的,还有Windows11WindowsInsiderCanaryChannel版本的build26040。有些朋友可能还记得,多年前有人成功将WindowsNT从工作站模式转换为服务器模式,显示微软操作系统各版本之间的共性。尽管现在微软的服务器操作系统版本和Windows11之间有明显区别,但关注细节的人可能会好奇:为什么WindowsServer更新了品牌,

如何修改nginx默认的名称,可以稍微的伪装一下,也可以装x一般来说修改3个位置,一个是nginx.h、另一个是ngx_http_header_filter_module.c、还有一个ngx_http_special_response.c。提示:一般修改都是在nginx编译之前修改,修改完了之后需要重新编译代码如下:scr/core/nginx.conf#definenginx_version"1.4.7"#definenginx_ver"nginx/"n

重返未来1999中玩家会在其中面对很多的关卡挑战,而且其中一个个不同的关卡所带来的挑战都完全不一样,而6-24作为其中一个关卡,也肯定会有着不少玩家想知道这一关卡该如何去进行挑战吧,所以下面也是会带来相关的通关方法了。重返未来19996-24通关方法1、一句话挂30层燃烧后,等boss眩晕一顿胖揍。2、一回合优先用主C和142d挂燃烧。3、二回合用辅助和奶妈小技能挂燃烧+和主c卡攒个大招。4、三回合boss就眩晕了,然后直接用大招和伤害技能胖揍。

微软在面向桌面端发布Win11预览版更新的同时,今天还发布了WindowsServer长期服务通道(LTSC)预览版Build25335。微软和以往相同,并未公布完整的更新日志,甚至于没有提供相应的博客文章。微软调整了WindowsServer预览版更新日志,让其和Canary频道版本相同,如果没有引入新的内容,则不放官方博文。IT之家注:Server的品牌尚未更新,在预览版中仍为WindowsServer2022。此外,微软将这些版本称为WindowsServervNext,而不是已经上市的W

鸣潮异想奇境难度3怎么过通关方式分享。鸣潮里面很多人都在通关这个异想奇境难度3了呢,这一关其实还是有点难度的,很多小伙伴们还不知道该怎么办比较好,不过不用担心,小编为大家带来了其中的攻略,你也来试试看吧。鸣潮异想奇境难度3怎么过鸣钟之龟角色强化共鸣技能可以提升我们气动的效果了,这样一来打出的攻击效率也会提升到,伤害也会更加的大的,不过大家要是有效果替换也是可以换取的。〔隐喻〕前三关选择:林中骄阳:可以让忌炎的伤害提升很多,技能的使用次数变多的话那么可以打出非常不错的暴击效果了。防护装置:用共鸣技

如果你认为安装UbuntuServer11.04版完全没必要装图形界面,更没有必要装目前还不是很完善的GNOME3。。或者应该用ARCH+GNOME3搭建。那么请别继续浪费时间看下去。前后花了2个晚上和一个白天,重装了N次。终于有点成果了。不容易啊。废话少说,正题:硬件:ThinkPadX61一只,UbuntuServer11.04安装U盘一只上网:ADSL(无线,有线)操作:伪程序猿一枚1.插入U盘,重启笔记本,狂按F12。(针对X61)2.进入启动选项界面,选择USB启动,然后选择安装Ubu

IT之家3月14日消息,微软今天面向桌面端发布Windows11Build26080预览版更新之外,还更新推出了WindowsServerBuild26080预览版更新。作为即将推出的WindowsServer长期服务通道(LTSC)的最新预览版,WindowsServerBuild26080提供了数据中心版和标准版,用户可以选择桌面体验和服务器核心安装选项。此版本还包括容器主机的年度通道,以及专门用于虚拟机评估的Azure版本。IT之家查询X社交媒体,用户反馈点击右下角的Copilot按钮,会
