mssql 快照发布:提升数据精准性的突破口

什么是mssql快照发布

mssql快照发布是一种可用于建立快照或发布的可复制的对象的技术。该技术可以导出当前数据库的所有对象,包括表、视图和存储过程等,并可以将快照发布到其他mssql服务器上。

为什么要使用mssql快照发布

使用mssql快照发布可以提供以下好处:

数据精准性:快照发布可以确保发布的数据是精确的。因为发布的数据库是当前数据库的快照,它是一个静态的副本,可以确保任何更改都无法影响到快照发布的数据。

可恢复性:由于快照发布是一个静态的副本,如果主数据库崩溃或腐败,可以使用已发布的快照轻松恢复数据。

可伸缩性:可以通过在多个服务器上分发快照来扩展系统。这可以减轻主服务器的负载,并且在同一时间可以为多个目标提供数据。

mssql快照发布的应用场景

应用场景一:多台服务器上的数据同步

当您需要在多台服务器之间同步数据时,可以使用快照发布来实现。通过将快照发布到每个服务器,可以确保每个服务器上的数据都是相同的。

-- 创建快照发布

EXEC sp_addpublication @publication = N'Sample Publication', @description = N'Transactional publication of database AdventureWorks2012.', @sync_method = N'concurrent', @retention = 0, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @allow_subscription_copy = N'false', @add_to_active_directory = N'false', @repl_freq = N'continuous', @status = N'active', @independent_agent = N'true', @immediate_sync = N'false', @allow_sync_tran = N'false', @autogen_sync_procs = N'true', @allow_queued_tran = N'false', @allow_dts = N'false', @replicate_ddl = 1, @allow_initialize_from_backup = N'false', @enabled_for_p2p = N'false', @enabled_for_het_sub = N'false'

应用场景二:数据备份与恢复

使用快照发布来备份和恢复数据库是一个好的选择。您可以将快照发布到备用服务器上,以备份当前数据库。如果主数据库崩溃或腐败,可以轻松地使用快照来恢复数据。

-- 创建快照发布

EXEC sp_addpublication @publication = N'Sample Publication', @description = N'Transactional publication of database AdventureWorks2012.', @sync_method = N'concurrent', @retention = 0, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @allow_subscription_copy = N'false', @add_to_active_directory = N'false', @repl_freq = N'continuous', @status = N'active', @independent_agent = N'true', @immediate_sync = N'false', @allow_sync_tran = N'false', @autogen_sync_procs = N'true', @allow_queued_tran = N'false', @allow_dts = N'false', @replicate_ddl = 1, @allow_initialize_from_backup = N'false', @enabled_for_p2p = N'false', @enabled_for_het_sub = N'false'

如何使用mssql快照发布

使用mssql快照发布需要遵循以下步骤:

步骤一:创建快照发布

使用sp_addpublication存储过程来创建一个快照发布。在创建时,需要提供以下信息:

publication名称:该名称应该是唯一的,并且用于标识您所创建的快照发布。

描述:该描述应该是唯一的,并且用于描述您所创建的快照发布的目的。

同步方式:指定发布的同步方式,可以是同步或异步。

保留期限:指定发布的保留期限,以便在快照以后清理快照。

允许推送:指定发布是否允许推送更改。

允许拉取:指定发布是否允许拉取更改。

-- 创建快照发布

EXEC sp_addpublication @publication = N'Sample Publication', @description = N'Transactional publication of database AdventureWorks2012.', @sync_method = N'concurrent', @retention = 0, @allow_push = N'true', @allow_pull = N'true', @allow_anonymous = N'false', @enabled_for_internet = N'false', @snapshot_in_defaultfolder = N'true', @compress_snapshot = N'false', @ftp_port = 21, @ftp_login = N'anonymous', @allow_subscription_copy = N'false', @add_to_active_directory = N'false', @repl_freq = N'continuous', @status = N'active', @independent_agent = N'true', @immediate_sync = N'false', @allow_sync_tran = N'false', @autogen_sync_procs = N'true', @allow_queued_tran = N'false', @allow_dts = N'false', @replicate_ddl = 1, @allow_initialize_from_backup = N'false', @enabled_for_p2p = N'false', @enabled_for_het_sub = N'false'

步骤二:为发布添加表、视图和存储过程等

添加数据对象时,必须使用sp_addarticle存储过程对每个对象进行单独创建。在添加对象时,请提供以下信息:

article名称:该名称应该是唯一的,并且用于标识您想要添加的对象。

article类型:指定添加的对象类型,可以是表、视图或存储过程等。

筛选器:指定添加的对象是否应根据列筛选器进行筛选。

-- 添加数据对象

EXEC sp_addarticle @publication = N'Sample Publication', @article = N'Customer', @source_owner = N'dbo', @source_object = N'Customer', @type = N'logbased', @description = N'', @creation_script = N'', @pre_creation_cmd = N'drop', @schema_option = 0x000000000803509D, @identityrangemanagementoption = N'none', @destination_table = N'Customer', @destination_owner = N'dbo', @vertical_partition = N'false', @ins_cmd = N'CALL [dbo].[sp_MSins_dboCustomer]', @del_cmd = N'CALL [dbo].[sp_MSdel_dboCustomer]', @upd_cmd = N'SCALL [dbo].[sp_MSupd_dboCustomer]'

步骤三:生成发布的快照

生成发布的快照是通过使用sp_startpublication_snapshot存储过程来完成的。在生成快照时,需要指定以下信息:

publication名称:指定要生成快照的发布。

snapshot_agent_name:指定快照代理的名称。

-- 生成快照

EXEC sp_startpublication_snapshot @publication = N'Sample Publication', @snapshot_agent_name = N'Sample Publication Snapshot Agent'

步骤四:将快照发布到目标服务器上

将快照发布到目标服务器是通过使用sp_addsubscription存储过程来完成的。在添加订阅时,需要指定以下信息:

publication名称:指定要添加订阅的发布。

subscriber名称:指定要添加订阅的目标服务器的名称。

定位器:指定目标服务器上的快照位置。

-- 添加订阅

USE [AdventureWorks2012]

EXEC sp_addsubscription @publication = N'Sample Publication', @subscriber = N'SERVER2\INSTANCE2', @destination_db = N'AdventureWorks2012', @sync_type = N'automatic', @subscription_type = N'pull', @update_mode = N'read only', @article = N'all', @subscriber_type = 0

GO

结束语

mssql快照发布是一种可用于建立快照或发布的可复制的对象的技术。它可以满足多台服务器上的数据同步和数据备份与恢复等应用场景。使用mssql快照发布需要遵循一定的步骤,包括创建快照发布、添加数据对象、生成快照和添加订阅。

数据库标签