复制快照代理文件命名



当SQL Server快照代理创建快照(用于事务性复制)时,会有一堆。pre,。sch,。bcp和。idx文件,通常以对象名称,序列号和部件号作为前缀。像MY_TABLE_1 # 1。

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

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

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

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

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

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

最新更新