【问题标题】:Is it possible to export my SQL replication definition to XML?是否可以将我的 SQL 复制定义导出到 XML?
【发布时间】:2009-06-30 20:11:45
【问题描述】:

我被要求这样做,但我不知道是否有这样做的标准方法。有谁知道 SQL Server 中是否有办法导出这个?

【问题讨论】:

  • 你能限定你的定义吗?例如,您是指您的 SQL Server 复制配置的详细信息吗?
  • 不如从一个更简单的问题开始:“是否可以导出我的 SQL 复制定义...”

标签: sql-server xml replication


【解决方案1】:

AFIK 没有这样做的标准方法。复制作为一种技术早于 XML,它的工具集和元数据不是以 XML 为中心的。但是,与复制相关的所有内容都存储在表中的某个位置,无论是在主数据库还是在 msdb 或在分发数据库中,请参阅Replication Tables topic on MSDN,或在复制 DMV(sys.dm_repl_articlessys.dm_repl_schemas)中。所有这些信息都可以被查询并格式化为 XML,但我不知道有任何标准 XML 模式涵盖了这些信息。

【讨论】:

    【解决方案2】:

    Remus 的回答效果很好。这是我用来将其导出为 XML 的 SQL 脚本。希望它对其他人有用:

    DECLARE @PublicationId INT
    SET @PublicationId = 1 –- Use your publication ID here. Use SELECT * FROM syspublications to see a list of publications
    
    select
          Publication.name AS [Name]
          , Publication.description AS [Description]
          , Article.name AS [Name]
          , Article.dest_table AS [Table]
          , [Column].name AS [Name]
          , [Column].[Type]
          , [Column].MaxLength
          , [Column].Nullable
    from dbo.syspublications Publication
          join dbo.sysarticles Article on Publication.pubid = Article.pubid
                join sys.tables st on st.object_id = Article.objid
          join dbo.sysarticlecolumns ac on Article.artid = ac.artid
          join 
          (
                select
                      sc.object_id
                      , sc.column_id
                      , sc.name AS [Name]
                      , sty.name AS [Type]
                      , sc.max_length AS MaxLength
                      , sc.is_nullable AS Nullable
                from dbo.syspublications p
                      join dbo.sysarticles a on p.pubid = a.pubid
                      join dbo.sysarticlecolumns ac on a.artid = ac.artid
                            join sys.columns sc on sc.object_id = a.objid AND sc.column_id = ac.colid
                      join sys.types sty on sty.user_type_id = sc.user_type_id
                where p.pubid = @PublicationId
          ) [Column] on [Column].object_id = Article.objid AND [Column].column_id = ac.colid
    where Publication.pubid = @PublicationId FOR XML AUTO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多