2013-05-21 34 views
0

當SQL Server快照代理創建快照(用於事務複製)時,會有一堆.PRE,.SCH,.BCP和.IDX文件,通常以對象名稱,序號和零件號碼。像MY_TABLE_1#1.bcp一樣。複製快照代理文件命名

但是,當表名像MY_TABLE_IS_LONG一樣長一點時,它可以將文件命名爲MY_TABLE_IS_LO890be30c_1#1。

我想手動處理這些文件中的一部分(即抓取快照並自己處理BCP),但這需要表的全名,而我一直無法找到從哪個十六進制數創建的地方或存儲。它們看起來並不是直的object_id,而且我檢查了分佈表和發佈數據庫中的各種支持表,其中表中有一個objid和sycobjid,它們都不是(在將十六進制轉換爲十進制之後)。

有誰知道這個數字來自哪裏?它一定在某個地方。

回答

0

看起來他們只是隨機的。會發生什麼情況是當生成快照時,將一組命令放入分發數據庫(您可以使用EXEC sp_browsereplcmds查看它們),並且這些命令具有硬編碼的表名以及腳本名稱以及以何種順序運行它們。

當您運行首次代理經銷,它得到的複製命令,這些命令它來運行所有腳本(或者,如果你有它設置爲僅複製的支持,我懷疑這些命令是隻是忽略)。

爲了半自動地處理腳本,你需要從replcmds(希望在一個安靜的系統上)抓取所有的東西,並在手動運行它們之前解析這些命令。