SQL中的更改跟踪:使用COLUMNPROPERY时的NULL值

时间:2014-12-11 16:57:06

标签: sql-server-2008

我正在尝试使用CHANGE TRACKING编写一个监视表变化的SQL查询。 我的查询正在努力,我希望它还监视哪些列已更改。

我在COLUMNPROPERTY上得到一个空值,我怀疑这意味着我没有正确的权限。这是我第一次尝试这种类型的查询,所以我会理解任何有关我出错的指导。

非常感谢

朱迪

SELECT
CT.TableCalendar, 
P.txtDescription, CHANGE_TRACKING_IS_COLUMN_IN_MASK (COLUMNPROPERTY(OBJECT_ID ('P'), 'txtDescription', 'ColumnID'), CT.SYS_CHANGE_COLUMNS) changeDescription, 
P.txtStartDate,
P.txtStartTime,
P.txtEndDate,
P.txtEndTime,
P.txtLocation,
P.intAllDayEvent,
P.intCategory,
P.intSubcategory,
P.txtCreatedBy, 
CT.SYS_CHANGE_OPERATION,
CT.SYS_CHANGE_VERSION,
CT.SYS_CHANGE_COLUMNS,
CT.SYS_CHANGE_CONTEXT,
U.txtFirstname,
U.txtSurname 

FROM
[dbo].[TableCalendar] AS P

RIGHT OUTER JOIN CHANGETABLE(CHANGES [dbo].[TableCalendar], @last_sync_version) AS CT ON P.TableCalendarID = CT.TableCalendarID 
INNER JOIN [dbo].[TableUsers] AS U ON [txtCreatedBy] = U.txtUserCode

1 个答案:

答案 0 :(得分:0)

这个查询是正确的,不幸的是,我试图跟踪更改的应用程序是以一种方式编写的,这意味着如果您编辑了一个字段,它会更新该表中的所有字段。