Точное обновление столбца LastUpdatedOn datetime2 в SQL Server

Я хочу обновить LastUpdatedOn datetime2 столбец каждый раз, когда строка обновляется в таблице SQL Server. Чтобы достичь этого, я думал об использовании After Update триггер, чтобы установить LastUpdatedOn в sysutcdatetime(), Этот триггер также отвечает за обнаружение изменений столбцов и сохранение старых значений в таблице истории. Мой вопрос заключается в том, сохранит ли подход триггера точное представление времени обновления строки? Есть ли задержка между фактическим обновлением и After Update вызвать обновление LastUpdatedOn?

Также, читая http://technet.microsoft.com/en-us/library/bb630387.aspx, это выглядит так GetSystemTimeAsFileTime() может быть неточным на нескольких серверах. В архитектуре изолированной базы данных с большим количеством одновременных записей, какой самый надежный способ определения времени события, чтобы я знал, что порядок событий во всем кластере является правильным?

PS я думал об использовании Change Data Capture, но это не доступно в SQL Azure.

1 ответ

Может возникнуть задержка, в зависимости от того, сколько строк вы обновляете в одном операторе, и от того, сколько журналов оно занимает, потому что триггер срабатывает в самом конце. Я бы порекомендовал обновить время внутри фактического заявления об обновлении.

Кроме того, используйте предложение output для перемещения данных в таблицу истории.

Другие вопросы по тегам