В настоящее время у меня есть этот скрипт, который позволяет отслеживать изменения для одной таблицы:
IF (SELECT COUNT(*) FROM sys.change_tracking_tables WHERE object_id=OBJECT_ID('TB_Styles')) = 0
Begin
ALTER TABLE [dbo].[TB_Styles] ENABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)
End
Он работал на разных базах данных, пока одна база данных не была выполнена с ошибкой, указывающей, что в базе данных должно быть включено отслеживание измененийВо-первых, я не знал об этом условии (это моя первая сделка с отслеживанием изменений в SQL), поэтому я добавил этот сценарий перед предыдущим:
IF (SELECT COUNT(*) FROM sys.change_tracking_databases WHERE database_id=DB_ID('TailorsDb')) = 0
Begin
ALTER DATABASE TailorsDb
SET CHANGE_TRACKING = ON
(CHANGE_RETENTION = 2 DAYS, AUTO_CLEANUP = ON)
End
, он работает, но проблема в том, что яЯ явно использую имя базы данных (в операторах IF
и ALTER
), что нехорошо, поскольку эти сценарии выполняются на разных компьютерах и имя базы данных не обязательно будет одинаковым.
(* Я использую оператор IF
, чтобы избежать ошибок при случайном запуске сценария более одного раза)