SQL Server 2005 репликация БД кросс-сервера - необходимо знать, когда строка была добавлена ​​/ обновлена ​​на целевом сервере - PullRequest
1 голос
/ 14 июля 2010

Я являюсь менеджером BI поверх установки SAP. У меня есть база данных SAP, в которую приложение SAP записывает данные. Чтобы получить среду для запросов без загрузки в sap, я отразил базу данных SAP на сервере, и она отлично работает.

Каждую ночь я делаю полную загрузку данных, и пока все работает нормально. Я знаю, что где-то в будущем мне придется начать делать постепенные обновления.

Это будет намного проще, если я знаю, какие строки в таблицах были изменены или добавлены и когда. Можно ли создать на целевом сервере триггер, который записывает данные в таблицу при ее обновлении или создании? В большинстве случаев нет никаких указаний на дату создания строки в исходных таблицах. Я не очень хорошо знаком с правилами зеркалирования и репликации

1 Ответ

2 голосов
/ 14 июля 2010

Самый простой способ исправить это, вероятно, обновить таблицу, добавив столбец timestamp, и установить его по умолчанию для текущего элемента версии. Вы можете посмотреть здесь для получения дополнительной информации, но формат в основном следующий ...

ALTER TABLE <tablename> ADD timestamp

Как отмечено в этой ссылке, вам не нужно указывать имя столбца, так как он автоматически начнет отслеживать метку времени во время вставки / обновления.

Обратите внимание, что это решение не дает вам удобочитаемого времени - данный элемент уникален для (просто что-то, что легко управлять версиями). Если вам нужно время, вы можете сделать столбец DATETIME, который по умолчанию равен GETDATE() (см. здесь для получения дополнительной информации). Когда вы вставляете / обновляете строку, вы просто игнорируете вставку / обновление чего-либо в этом конкретном столбце, и текущий DATETIME будет добавлен для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...