Questions tagged «change-tracking»

5
检测SQL Server表中的更改
在我的应用程序中,有了在SQL Server 2012上运行的数据库,我得到了一个作业(计划任务),该作业会定期执行昂贵的查询并将结果写入表中,以供应用程序以后查询。 理想情况下,仅当自上次执行查询以来发生某些更改时,我才想运行该昂贵的查询。由于源表非常大,因此我不能只选择所有候选列之类的校验和。 我有以下想法: 每当我更改源表中的内容时,都应将最后更改的时间戳,“必须查询”标志或类似的内容显式地写入跟踪表。 使用触发器执行相同的操作。 但是,我真的很想知道是否存在一种轻量级的方法来检测表上的更改,而无需我明确跟踪写入。例如,我可以获取表的“当前” ROWVERSION值或诸如此类的东西吗?


1
变更跟踪内部结构是否从SQL Server 2008更改为2012?
在解决与断开连接的设备与中央数据库服务器同步的问题时,在服务器上升级到SQL Server 2012之后,我们遇到了问题。看来CHANGE_TRACKING_MIN_VALID_VERSION返回的值比应有的值高1(或至少比升级前的值高)。 我一直在通过Arshad Ali的出色案例来研究如何建立一个简单的示例。 我已经从#1到#5运行脚本,以在SQL Server 2008和2012环境中在Employee表中插入,删除和更新一行。 在2008年,以下语句返回0: SELECT CHANGE_TRACKING_MIN_VALID_VERSION(OBJECT_ID('Employee')) 在2012年,它返回1。 在测试中通过其他几个脚本(6-8)工作时,我将保留期设置为1分钟,以期希望执行清除操作。我离开了一天,显然它跑了一整夜。 在2008年实例中,CHANGE_TRACKING_CURRENT_VERSION和CHANGE_TRACKING_MIN_VALID_VERSION相等(11)。在2012年实例中,CHANGE_TRACKING_MIN_VALID_VERSION(12)比CHANGE_TRACKING_CURRENT_VERSION(11)高一。当数据库长时间闲置时,这可能会对同步过程产生影响。而且我们发现进程可能陷入循环,尤其是在执行以下测试以确定是否需要重新初始化而不是同步的情况下: IF CHANGE_TRACKING_MIN_VALID_VERSION(object_id(N'dbo.Employee')) > @sync_last_received_anchor RAISERROR (N'SQL Server Change Tracking has cleaned up tracking information for table ''%s''... 有没有其他人经历过这种行为改变?有人解释吗?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.