【问题标题】:Replication Snapshot Agent file naming复制快照代理文件命名
【发布时间】:2013-05-21 10:36:47
【问题描述】:

当 SQL Server 快照代理创建快照(用于事务复制)时,会有一堆 .PRE、.SCH、.BCP 和 .IDX 文件,通常以对象名称、序列号和部件号为前缀。像 MY_TABLE 的 MY_TABLE_1#1.bcp。

但是当表名有点长,比如 MY_TABLE_IS_LONG 时,它可以将文件命名为 MY_TABLE_IS_LO890be30c_1#1。

我想手动处理其中一些文件(即获取快照并自己处理 BCP)但这需要表的全名,并且我无法找到该十六进制数字的创建位置或存储。它们似乎不是一个直接的 object_id,我已经检查了分发和发布数据库中的各种支持表,其中这些表具有 objid 和 sycobjid,但它们都不是(在将十六进制转换为十进制之后)。

有人知道这个数字是从哪里来的吗?它一定在某个地方。

【问题讨论】:

    标签: sql-server transactional-replication


    【解决方案1】:

    看起来它们只是随机的。发生的情况是,当生成快照时,会将一组命令放入分发数据库(您可以使用 EXEC sp_browsereplcmds 查看它们),这些命令具有硬编码的表名和脚本名,以及运行它们的顺序。

    当您第一次运行分发代理时,它会获取那些复制的命令,这些命令会指示它运行所有脚本(或者,如果您将其设置为仅支持复制,我怀疑这些命令只是忽略)。

    为了半自动处理脚本,您需要从 replcmds 中获取所有内容(希望在安静的系统上)并在手动运行命令之前解析命令。

    【讨论】:

      猜你喜欢
      • 2015-09-30
      • 2014-09-21
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 2017-07-25
      • 2017-09-16
      • 2014-11-12
      相关资源
      最近更新 更多