Интересная тема, никогда не пробовал смотреть что там делается при синхронизации. Я посмотрел первый запрос, который по 70 мс у вас выполняется. Если его запускать, то любой повторный запуск у меня отрабатывает 0мс на тестовой базе. Это наталкивает на мысль, что все время там тратится на парсинг и построение плана. Так происходит потому, что запрос с литералами, а именно название таблицы туда передается. Я попробовал убрать литералы через план гайд, т.е. сделать параметризованный запрос, тогда времени на него почти не тратится. Делается это простым скриптом:
PHP код:
DECLARE @stmt nvarchar(max);
DECLARE @params nvarchar(max);
EXEC sp_get_query_template
N'select name, change_tracking_state_desc from sys.columns AS Cols inner join sys.fulltext_index_columns AS FTSCols inner join sys.fulltext_indexes as FTS on FTSCols.object_id = FTS.object_id on Cols.object_id = FTSCols.object_id where Cols.column_id = FTSCols.column_id and Cols.object_id = object_id(''SYSINETCSS'')',
@stmt OUTPUT,
@params OUTPUT;
select @stmt;
EXEC sp_create_plan_guide
N'SyncTemplateGuide',
@stmt,
N'TEMPLATE',
NULL,
@params,
N'OPTION(PARAMETERIZATION FORCED)';
На медленной тестовой базе это ускорило синхронизацию с 28 до 7 минут примерно.
Попробуйте у себя. Плюс в том что не нужно патчить exe.