diff --git a/MS_DistributorMetadata.sql b/MS_DistributorMetadata.sql index 9d0f9b0..1d33d1b 100644 --- a/MS_DistributorMetadata.sql +++ b/MS_DistributorMetadata.sql @@ -1,4 +1,4 @@ ---Distribution Database Replication Metadata Collection Script +--Distribution Database Replication Metadata Collection Script -- Execute On Distributor --Change as required: -- Assumes Distribution database names is 'distribution' @@ -8,57 +8,210 @@ CREATE DATABASE MS_DistBackup Go ALTER DATABASE MS_DistBackup SET RECOVERY SIMPLE WITH NO_WAIT; GO -USE MS_DistBackup +USE distribution go -- For distribution DB +250gb range consider commenting next 4 select statements -SELECT Top 100 * INTO MSrepl_commands_OLDEST from Distribution..MSrepl_commands with (nolock) +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_commands]') AND type in (N'U')) +BEGIN +SELECT Top 100 * INTO MS_DistBackup..MSrepl_commands_OLDEST from Distribution..MSrepl_commands with (nolock) order by xact_seqno asc -SELECT Top 100 * INTO MSrepl_commands_NEWEST from Distribution..MSrepl_commands with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_commands]') AND type in (N'U')) +BEGIN +SELECT Top 100 * INTO MS_DistBackup..MSrepl_commands_NEWEST from Distribution..MSrepl_commands with (nolock) order by xact_seqno desc -SELECT top 100 * INTO MSrepl_transactions_OLDEST from Distribution..MSrepl_transactions with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_transactions]') AND type in (N'U')) +BEGIN +SELECT top 100 * INTO MS_DistBackup..MSrepl_transactions_OLDEST from Distribution..MSrepl_transactions with (nolock) order by xact_seqno asc -SELECT top 100 * INTO MSrepl_transactions_NEWEST from Distribution..MSrepl_transactions with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_transactions]') AND type in (N'U')) +BEGIN +SELECT top 100 * INTO MS_DistBackup..MSrepl_transactions_NEWEST from Distribution..MSrepl_transactions with (nolock) order by xact_seqno desc - -SELECT * INTO MSarticles from Distribution..MSarticles with (nolock) -SELECT * INTO MScached_peer_lsns from Distribution..MScached_peer_lsns with (nolock) -SELECT * INTO MSdistribution_agents from Distribution..MSdistribution_agents with (nolock) -SELECT * INTO MSdistribution_history from Distribution..MSdistribution_history with (nolock) -SELECT * INTO MSlogreader_agents from Distribution..MSlogreader_agents with (nolock) -SELECT * INTO MSlogreader_history from Distribution..MSlogreader_history with (nolock) -SELECT * INTO MSmerge_agents from Distribution..MSmerge_agents with (nolock) -SELECT * INTO MSmerge_articlehistory from Distribution..MSmerge_articlehistory with (nolock) -SELECT * INTO MSmerge_history from Distribution..MSmerge_history with (nolock) -SELECT * INTO MSmerge_identity_range_allocations from Distribution..MSmerge_identity_range_allocations with (nolock) -SELECT * INTO MSmerge_sessions from Distribution..MSmerge_sessions with (nolock) -SELECT * INTO MSmerge_subscriptions from Distribution..MSmerge_subscriptions with (nolock) -SELECT * INTO MSpublication_access from Distribution..MSpublication_access with (nolock) -SELECT * INTO MSpublications from Distribution..MSpublications with (nolock) -SELECT * INTO MSpublicationthresholds from Distribution..MSpublicationthresholds with (nolock) -SELECT * INTO MSpublisher_databases from Distribution..MSpublisher_databases with (nolock) -SELECT * INTO MSqreader_agents from Distribution..MSqreader_agents with (nolock) -SELECT * INTO MSqreader_history from Distribution..MSqreader_history with (nolock) -SELECT * INTO MSrepl_backup_lsns from Distribution..MSrepl_backup_lsns with (nolock) -SELECT * INTO MSrepl_errors from Distribution..MSrepl_errors with (nolock) -SELECT * INTO MSrepl_identity_range from Distribution..MSrepl_identity_range with (nolock) -SELECT * INTO MSrepl_originators from Distribution..MSrepl_originators with (nolock) -SELECT * INTO MSrepl_version from Distribution..MSrepl_version with (nolock) -SELECT * INTO MSreplication_monitordata from Distribution..MSreplication_monitordata with (nolock) -SELECT * INTO MSsnapshot_agents from Distribution..MSsnapshot_agents with (nolock) -SELECT * INTO MSsnapshot_history from Distribution..MSsnapshot_history with (nolock) -SELECT * INTO MSsubscriber_info from Distribution..MSsubscriber_info with (nolock) -SELECT * INTO MSsubscriber_schedule from Distribution..MSsubscriber_schedule with (nolock) -SELECT * INTO MSsubscriptions from Distribution..MSsubscriptions with (nolock) -SELECT * INTO MSsync_states from Distribution..MSsync_states with (nolock) -SELECT * INTO MStracer_history from Distribution..MStracer_history with (nolock) -SELECT * INTO MStracer_tokens from Distribution..MStracer_tokens with (nolock) +END +GO -SELECT * INTO [MSredirected_publishers] from Distribution..[MSredirected_publishers] with (nolock) -SELECT * INTO [MSrepl_agent_jobs] from Distribution..[MSrepl_agent_jobs] with (nolock) -SELECT * INTO [MSreplservers] from Distribution..[MSreplservers] with (nolock) -Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSarticles]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSarticles from Distribution..MSarticles with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MScached_peer_lsns]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MScached_peer_lsns from Distribution..MScached_peer_lsns with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSdistribution_agents]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSdistribution_agents from Distribution..MSdistribution_agents with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSdistribution_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSdistribution_history from Distribution..MSdistribution_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSlogreader_agents]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSlogreader_agents from Distribution..MSlogreader_agents with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSlogreader_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSlogreader_history from Distribution..MSlogreader_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_agents]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup.. MSmerge_agents from Distribution..MSmerge_agents with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_articlehistory]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSmerge_articlehistory from Distribution..MSmerge_articlehistory with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSmerge_history from Distribution..MSmerge_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_identity_range_allocations]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSmerge_identity_range_allocations from Distribution..MSmerge_identity_range_allocations with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_sessions]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSmerge_sessions from Distribution..MSmerge_sessions with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_subscriptions]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSmerge_subscriptions from Distribution..MSmerge_subscriptions with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpublication_access]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSpublication_access from Distribution..MSpublication_access with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpublications]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSpublications from Distribution..MSpublications with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpublicationthresholds]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSpublicationthresholds from Distribution..MSpublicationthresholds with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpublisher_databases]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSpublisher_databases from Distribution..MSpublisher_databases with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSqreader_agents]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSqreader_agents from Distribution..MSqreader_agents with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSqreader_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSqreader_history from Distribution..MSqreader_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_backup_lsns]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSrepl_backup_lsns from Distribution..MSrepl_backup_lsns with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_errors]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSrepl_errors from Distribution..MSrepl_errors with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_identity_range]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSrepl_identity_range from Distribution..MSrepl_identity_range with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_originators]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSrepl_originators from Distribution..MSrepl_originators with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_version]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSrepl_version from Distribution..MSrepl_version with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSreplication_monitordata]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSreplication_monitordata from Distribution..MSreplication_monitordata with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsnapshot_agents]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsnapshot_agents from Distribution..MSsnapshot_agents with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsnapshot_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsnapshot_history from Distribution..MSsnapshot_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsubscriber_info]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsubscriber_info from Distribution..MSsubscriber_info with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsubscriber_schedule]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsubscriber_schedule from Distribution..MSsubscriber_schedule with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsubscriptions]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsubscriptions from Distribution..MSsubscriptions with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsync_states]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MSsync_states from Distribution..MSsync_states with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MStracer_history]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MStracer_history from Distribution..MStracer_history with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MStracer_tokens]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..MStracer_tokens from Distribution..MStracer_tokens with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSredirected_publishers]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..[MSredirected_publishers] from Distribution..[MSredirected_publishers] with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_agent_jobs]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..[MSrepl_agent_jobs] from Distribution..[MSrepl_agent_jobs] with (nolock) +END +GO +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSreplservers]') AND type in (N'U')) +BEGIN +SELECT * INTO MS_DistBackup..[MSreplservers] from Distribution..[MSreplservers] with (nolock) +END +GO --Change backup location if needed. -BACKUP DATABASE MS_DistBackup to disk='c:\MS_DistBackup.bak' -Go - +BACKUP DATABASE MS_DistBackup to disk='C:\DBBackup\MS_DistBackup.bak' +Go \ No newline at end of file diff --git a/MS_PublisherMetadata.sql b/MS_PublisherMetadata.sql index aa78e2b..1c0536e 100644 --- a/MS_PublisherMetadata.sql +++ b/MS_PublisherMetadata.sql @@ -1,8 +1,6 @@ ---Publisher Replication Metadata Collection Script +--Publisher Replication Metadata Collection Script --Execute on the Publisher: modify backup location below as needed -- ---Note: Some errors may appear as not all tables --- may exists on all subscribers -- CREATE DATABASE MS_PublisherMetadata @@ -21,93 +19,218 @@ Go Go --SELECT * INTO MS_PublisherMetadata..MSmerge_past_partition_mappings FROM MSmerge_past_partition_mappings Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_agent_parameters]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_agent_parameters FROM MSmerge_agent_parameters with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_altsyncpartners]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_altsyncpartners FROM MSmerge_altsyncpartners with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_articlehistory]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_articlehistory FROM MSmerge_articlehistory with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_conflicts_info]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_conflicts_info FROM MSmerge_conflicts_info with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_dynamic_snapshots]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_dynamic_snapshots FROM MSmerge_dynamic_snapshots with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_errorlineage]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_errorlineage FROM MSmerge_errorlineage with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_generation_partition_mappings]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_generation_partition_mappings FROM MSmerge_generation_partition_mappings with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_genhistory]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_genhistory FROM MSmerge_genhistory with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_history]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_history FROM MSmerge_history with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_identity_range]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_identity_range FROM MSmerge_identity_range with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_log_files]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_log_files FROM MSmerge_log_files with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_metadataaction_request]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_metadataaction_request FROM MSmerge_metadataaction_request with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_partition_groups]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_partition_groups FROM MSmerge_partition_groups with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_replinfo]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_replinfo FROM MSmerge_replinfo with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_sessions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_sessions FROM MSmerge_sessions with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_settingshistory]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_settingshistory FROM MSmerge_settingshistory with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_supportability_settings]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_supportability_settings FROM MSmerge_supportability_settings with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_tombstone]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..MSmerge_tombstone FROM MSmerge_tombstone with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergearticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergearticles FROM sysmergearticles with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergepartitioninfo]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergepartitioninfo FROM sysmergepartitioninfo with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergepublications]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergepublications FROM sysmergepublications with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergeschemaarticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergeschemaarticles FROM sysmergeschemaarticles with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergeschemachange]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergeschemachange FROM sysmergeschemachange with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergesubscriptions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergesubscriptions FROM sysmergesubscriptions with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergesubsetfilters]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata..sysmergesubsetfilters FROM sysmergesubsetfilters with (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_conflictdetectionconfigresponse]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_conflictdetectionconfigresponse FROM dbo.MSpeer_conflictdetectionconfigresponse WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysreplservers]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.sysreplservers FROM dbo.sysreplservers WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysarticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.sysarticles FROM dbo.sysarticles WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysarticlecolumns]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.sysarticlecolumns FROM dbo.sysarticlecolumns WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysschemaarticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.sysschemaarticles FROM dbo.sysschemaarticles WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[syspublications]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.syspublications FROM dbo.syspublications WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[syssubscriptions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.syssubscriptions FROM dbo.syssubscriptions WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysarticleupdates]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.sysarticleupdates FROM dbo.sysarticleupdates WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpub_identity_range]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpub_identity_range FROM dbo.MSpub_identity_range WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[systranschemas]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.systranschemas FROM dbo.systranschemas WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_lsns]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_lsns FROM dbo.MSpeer_lsns WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_request]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_request FROM dbo.MSpeer_request WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_response]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_response FROM dbo.MSpeer_response WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_topologyrequest]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_topologyrequest FROM dbo.MSpeer_topologyrequest WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_topologyresponse]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_topologyresponse FROM dbo.MSpeer_topologyresponse WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_originatorid_history]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_originatorid_history FROM dbo.MSpeer_originatorid_history WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSpeer_conflictdetectionconfigrequest]') AND type in (N'U')) +BEGIN SELECT * INTO MS_PublisherMetadata.dbo.MSpeer_conflictdetectionconfigrequest FROM dbo.MSpeer_conflictdetectionconfigrequest WITH (nolock) +END Go --Change backup location if needed. BACKUP DATABASE MS_PublisherMetadata TO DISK='c:\MS_PublisherMetadata.bak' GO - diff --git a/MS_SubscriberMetadata.sql b/MS_SubscriberMetadata.sql index 08bb085..ee56c53 100644 --- a/MS_SubscriberMetadata.sql +++ b/MS_SubscriberMetadata.sql @@ -1,6 +1,4 @@ ---Execute on the Subscriber database ---Note: Some errors may appear as not all tables --- may exists on all subscribers +--Execute on the Subscriber database -- create database MS_SubscriberMetadata @@ -9,92 +7,197 @@ go ALTER DATABASE MS_SubscriberMetadata SET RECOVERY SIMPLE WITH NO_WAIT; GO -Use +Use go --Merge Replication Tables +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsnapshotdeliveryprogress]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSsnapshotdeliveryprogress FROM dbo.MSsnapshotdeliveryprogress WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_conflict_MergeProduct_Product]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_conflict_MergeProduct_Product FROM dbo.MSmerge_conflict_MergeProduct_Product WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_articlehistory]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_articlehistory FROM dbo.MSmerge_articlehistory WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSrepl_errors]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSrepl_errors FROM dbo.MSrepl_errors WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_history]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_history FROM dbo.MSmerge_history WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_agent_parameters]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_agent_parameters FROM dbo.MSmerge_agent_parameters WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_replinfo]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_replinfo FROM dbo.MSmerge_replinfo WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergearticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergearticles FROM dbo.sysmergearticles WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_conflicts_info]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_conflicts_info FROM dbo.MSmerge_conflicts_info WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_metadataaction_request]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_metadataaction_request FROM dbo.MSmerge_metadataaction_request WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_errorlineage]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_errorlineage FROM dbo.MSmerge_errorlineage WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergepublications]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergepublications FROM dbo.sysmergepublications WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_identity_range]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_identity_range FROM dbo.MSmerge_identity_range WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergepartitioninfo]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergepartitioninfo FROM dbo.sysmergepartitioninfo WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergeschemaarticles]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergeschemaarticles FROM dbo.sysmergeschemaarticles WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_tombstone]') AND type in (N'U')) +BEGIN --potential high volume table, collect as needed SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_tombstone FROM dbo.MSmerge_tombstone WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_contents]') AND type in (N'U')) +BEGIN --potential high volume table, collect as needed SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_contents FROM dbo.MSmerge_contents WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_genhistory]') AND type in (N'U')) +BEGIN --potential high volume table, collect as needed SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_genhistory FROM dbo.MSmerge_genhistory WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_settingshistory]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_settingshistory FROM dbo.MSmerge_settingshistory WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergeschemachange]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergeschemachange FROM dbo.sysmergeschemachange WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergesubsetfilters]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergesubsetfilters FROM dbo.sysmergesubsetfilters WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSdynamicsnapshotviews]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSdynamicsnapshotviews FROM dbo.MSdynamicsnapshotviews WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSdynamicsnapshotjobs]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSdynamicsnapshotjobs FROM dbo.MSdynamicsnapshotjobs WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_altsyncpartners]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_altsyncpartners FROM dbo.MSmerge_altsyncpartners WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_partition_groups]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_partition_groups FROM dbo.MSmerge_partition_groups WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[sysmergesubscriptions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.sysmergesubscriptions FROM dbo.sysmergesubscriptions WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_generation_partition_mappings]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_generation_partition_mappings FROM dbo.MSmerge_generation_partition_mappings WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_current_partition_mappings]') AND type in (N'U')) +BEGIN --potential high volume table, collect as needed SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_current_partition_mappings FROM dbo.MSmerge_current_partition_mappings WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_past_partition_mappings]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_past_partition_mappings FROM dbo.MSmerge_past_partition_mappings WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_sessions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_sessions FROM dbo.MSmerge_sessions WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_dynamic_snapshots]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_dynamic_snapshots FROM dbo.MSmerge_dynamic_snapshots WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_supportability_settings]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_supportability_settings FROM dbo.MSmerge_supportability_settings WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSmerge_log_files]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSmerge_log_files FROM dbo.MSmerge_log_files WITH (nolock) +END Go --Transactional Replication Tables +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSreplication_subscriptions]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSreplication_subscriptions FROM dbo.MSreplication_subscriptions WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSsubscription_agents]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSsubscription_agents FROM dbo.MSsubscription_agents WITH (nolock) +END Go +IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[MSreplication_objects]') AND type in (N'U')) +BEGIN SELECT * INTO MS_SubscriberMetadata.dbo.MSreplication_objects FROM dbo.MSreplication_objects WITH (nolock) -Go -SELECT * INTO MS_SubscriberMetadata.dbo.MSsnapshotdeliveryprogress FROM dbo.MSsnapshotdeliveryprogress WITH (nolock) +END Go --Change backup location if needed. Backup database MS_SubscriberMetadata to disk='c:\MS_SubscriberMetadata.bak' Go - diff --git a/Replication Topology Script.sql b/Replication Topology Script.sql index b92824d..7262640 100644 --- a/Replication Topology Script.sql +++ b/Replication Topology Script.sql @@ -4,7 +4,7 @@ * VERSION : 1.1 * RUNS ON : The Distributor Server; against the Distribution Database * Script written by Suhas De & Gaurav Mathur, Franklin Gamboa Morera, Taiyeb Zakir -* Copyright Microsoft +* Copyright Microsoft * ********************************************************************************* * This script queries the Distribution Database for Replication topology * Upgraded to support SQL 2008 and above @@ -98,6 +98,7 @@ IF ((SELECT [VALUE] FROM ##CE WHERE [DESCRIPTION] = 'Continue') = 1) DECLARE @PUBLICATIONTYPE INT DECLARE @PUBLICATIONDATABASE SYSNAME DECLARE @ALLOW_QUEUED_TRAN INT + DECLARE @DESCRIPTION NVARCHAR(MAX) DECLARE @STMT VARCHAR(MAX) DECLARE @NUMARTICLES INT DECLARE @RESERVEDSIZE BIGINT @@ -117,7 +118,7 @@ IF ((SELECT [VALUE] FROM ##CE WHERE [DESCRIPTION] = 'Continue') = 1) begin --print '1' DECLARE PUBLISHERCURSOR CURSOR LOCAL READ_ONLY FOR - SELECT DISTINCT S.srvname as [NAME], PUB.PUBLISHER_ID + SELECT DISTINCT S.srvname as [NAME], PUB.PUBLISHER_ID FROM dbo.msreplservers (NOLOCK) S JOIN DBO.MSPUBLICATIONS (NOLOCK) PUB ON S.srvid = PUB.PUBLISHER_ID end @@ -141,11 +142,11 @@ IF ((SELECT [VALUE] FROM ##CE WHERE [DESCRIPTION] = 'Continue') = 1) SET @CONSOLEMSG = ' |- PUBLICATIONS' RAISERROR (@CONSOLEMSG,10,1) WITH NOWAIT DECLARE PUBLICATIONCURSOR CURSOR LOCAL READ_ONLY FOR - SELECT PUBLICATION, PUBLICATION_ID, PUBLICATION_TYPE, PUBLISHER_DB, ALLOW_QUEUED_TRAN + SELECT PUBLICATION, PUBLICATION_ID, PUBLICATION_TYPE, PUBLISHER_DB, ALLOW_QUEUED_TRAN, description FROM DBO.MSPUBLICATIONS (NOLOCK) WHERE PUBLISHER_ID = @PUBLISHERID OPEN PUBLICATIONCURSOR FETCH NEXT FROM PUBLICATIONCURSOR INTO @PUBLICATIONAME, @PUBLICATIONID, - @PUBLICATIONTYPE, @PUBLICATIONDATABASE, @ALLOW_QUEUED_TRAN + @PUBLICATIONTYPE, @PUBLICATIONDATABASE, @ALLOW_QUEUED_TRAN, @DESCRIPTION WHILE @@FETCH_STATUS = 0 BEGIN SET @CONSOLEMSG = ' |- ' + @PUBLICATIONAME + ' (' @@ -162,6 +163,7 @@ IF ((SELECT [VALUE] FROM ##CE WHERE [DESCRIPTION] = 'Continue') = 1) ELSE IF @PUBLICATIONTYPE = 2 SET @CONSOLEMSG = @CONSOLEMSG + 'Publication type: Merge; ' SET @CONSOLEMSG = @CONSOLEMSG + 'Publication database: ' + @PUBLICATIONDATABASE + ')' + SET @CONSOLEMSG = @CONSOLEMSG + ' - Description: ' + @DESCRIPTION RAISERROR (@CONSOLEMSG,10,1) WITH NOWAIT SET @CONSOLEMSG = 'XXX' IF @PUBLICATIONTYPE < 2 @@ -322,7 +324,7 @@ IF ((SELECT [VALUE] FROM ##CE WHERE [DESCRIPTION] = 'Continue') = 1) DEALLOCATE SUBSCRIPTIONCURSOR END FETCH NEXT FROM PUBLICATIONCURSOR INTO @PUBLICATIONAME, @PUBLICATIONID, - @PUBLICATIONTYPE, @PUBLICATIONDATABASE, @ALLOW_QUEUED_TRAN + @PUBLICATIONTYPE, @PUBLICATIONDATABASE, @ALLOW_QUEUED_TRAN, @DESCRIPTION END CLOSE PUBLICATIONCURSOR DEALLOCATE PUBLICATIONCURSOR