Именование файлов агента моментальных снимков репликации
Когда агент моментальных снимков SQL Server создает моментальный снимок (для репликации транзакций), появляется группа файлов.PRE, .SCH, .BCP и.IDX, обычно с префиксом имени объекта, порядкового номера и номера детали. Как и MY_TABLE_1#1.bcp для MY_TABLE.
Но когда имена таблиц немного длиннее, чем MY_TABLE_IS_LONG, они могут называть файлы как MY_TABLE_IS_LO890be30c_1#1.
Я хочу обработать некоторые из этих файлов вручную (то есть получить снимок и обработать BCP самостоятельно), но для этого требуется полное имя таблицы, и я не смог найти, где это шестнадцатеричное число создается или сохраняется. Они не кажутся прямыми object_id, и я проверил различные вспомогательные таблицы в базах данных дистрибуции и публикации, где таблицы имеют objid и sycobjid, и ни того, ни другого (после преобразования шестнадцатеричного в десятичное).
Кто-нибудь знает, откуда этот номер? Это должно быть где-то.
1 ответ
Похоже, они просто случайны. Что происходит, когда создается моментальный снимок, набор команд помещается в базу данных распространителя (вы можете увидеть их с помощью EXEC sp_browsereplcmds), и у них есть жестко закодированное имя таблицы вместе с именами сценариев и в каком порядке их запускать.
Когда вы в первый раз запускаете агент распространения, он получает эти реплицированные команды, и они инструктируют его запускать все сценарии (альтернативно, если вы настроили только поддержку репликации, я подозреваю, что эти команды просто игнорируются).
Чтобы полуавтоматически обрабатывать сценарии, вам нужно получить все из replcmds (надеюсь, в тихой системе) и проанализировать команды перед их запуском вручную.