У нас есть база данных, работающая на общем хосте через SQL Server 2008. Мы находимся теперь в положении, из-за ограничений производительности, куда мы должны переместить базу данных, наряду с веб-сайтом. Мы используем отслеживание изменений на базе данных так, чтобы клиенты могли синхронизировать использование синхронизирующей платформы.
Мой вопрос: таблица, хранимая отслеживания изменений в базе данных способом, который означает, что при перемещении это останется на месте?
Я в настоящее время нахожусь в процессе изучения SQL Server, и тонкости отслеживания изменений все еще ссылаются меня. Концептуально, я действительно не понимаю, 'где' таблица отслеживания изменений.
Таблица Commit - это скрытая внутренняя таблица с именем sys.syscommittab
, доступ к которой могут получить только администраторы, и хранит одну строку для каждой транзакции для каждой модификации таблицы, участвующей в отслеживании изменений.
Соответствующие данные хранятся в отдельных системных таблицах, создаваемых при включении отслеживания изменений в пользовательской таблице.
Внутренняя таблица, созданная при включении отслеживания изменений на уровне таблицы, называется sys.change_tracking_[object id
], где [object id] - идентификатор объекта для целевой таблицы.
Из здесь следует, что отслеживание изменений - это таблица общего назначения в том же каталоге базы данных, что и ваши таблицы. Таким образом, при любом перемещении базы данных таблица изменений должна быть взята с собой.
Я бы сначала изучил схему базы данных и использовал страницы MSDN.
Обдумывал, публиковать ли это в качестве ответа, поскольку мне обычно не нравится просто давать ссылку, но в этом случае я хотел резюмировать некоторые моменты и поэтому не стал бы делать ну и комментарий!
Стоит прочитать эту статью, в которой подробно рассказывается о том, как работает отслеживание изменений и (и сбор данных изменений).
Для отслеживания изменений вы можете узнать, какие внутренние таблицы используются для отслеживания изменений, используя:
SELECT [name] FROM sys.internal_tables
WHERE [internal_type_desc] = 'CHANGE_TRACKING';
Важная цитата:
Таблица - это так называемая внутренняя таблица , и здесь нет контроль над его названием или где он хранится.