Sql 如何查询DNN(DotNetNuke)数据库以查找最近修改过的页面
我正在尝试提出一个sql查询,可以查找DNN网站中最近编辑过的所有网页,但是Sql 如何查询DNN(DotNetNuke)数据库以查找最近修改过的页面,sql,dotnetnuke,Sql,Dotnetnuke,我正在尝试提出一个sql查询,可以查找DNN网站中最近编辑过的所有网页,但是CreatedOnDate或LastModifiedOnDate值似乎都非常有用-例如,每当内容编辑器点击“编辑”按钮时,HtmlText表中的LastModifiedOnDate列似乎会得到更新(即使它们实际上没有做任何更改) 例如,此查询返回自2018-01-01以来未实际更改的页面的大量URL: select distinct tu.url from HtmlText ht join TabModules tm
CreatedOnDate
或LastModifiedOnDate
值似乎都非常有用-例如,每当内容编辑器点击“编辑”按钮时,HtmlText
表中的LastModifiedOnDate
列似乎会得到更新(即使它们实际上没有做任何更改)
例如,此查询返回自2018-01-01以来未实际更改的页面的大量URL:
select distinct tu.url
from HtmlText ht
join TabModules tm
on ht.moduleid = tm.moduleid
join Modules m
on tm.moduleid = m.moduleid
join Tabs t
on tm.tabid = t.tabid
join TabUrls tu
on t.tabid = tu.tabid
where ht.LastModifiedOnDate >= '2018-01-01'
在数据库中是否有我不知道的地方可以更准确地跟踪更改
编辑
事实证明,查找DNN网站中已更改的页面的最佳方法是在TabVersions表中加入,例如:
select distinct replace(t.tabpath, '//', '/'), u.email, u.displayname
from HtmlText ht
join TabModules tm
on ht.moduleid = tm.moduleid
join Tabs t
on tm.tabid = t.tabid
join TabVersions tv
on t.TabID = tv.tabid
join Users u
on tv.createdbyuserid = u.userid
where tv.CreatedOnDate >= '2018-03-01'
跟踪每个选项卡、选项卡模块设置和模块内容的修改日期(取决于模块本身)。甚至HTMLText。 是的,当按下更新按钮时,日期会被更新,而不管设置或内容的实际更改 但是,仅通过打开设置不会更新LastModifiedOnDate 你的问题似乎不正确。我运行了它,但它没有返回我修改的最新HTMLText。只有在删除TabURL上的内部联接时,所有模块才会返回。所以我会这样做:
SELECT HtmlText.ModuleID, TabModules.ModuleTitle, Tabs.TabName, TabUrls.Url
FROM HtmlText
INNER JOIN TabModules ON TabModules.ModuleID = HtmlText.ModuleID
INNER JOIN Tabs ON Tabs.TabID = TabModules.TabID
LEFT OUTER JOIN TabUrls ON TabUrls.TabId = Tabs.TabID
ORDER BY HtmlText.LastModifiedOnDate DESC
如果没有跟踪真实的修改日期,我不确定您如何能够获得上次修改的准确列表。好的,shawn-我添加了一个问题“数据库中是否有我不知道的地方可以更准确地跟踪更改?”以澄清我的问题。我不确定DNN的可编辑性,但是,在实际提交编辑之前,您可能必须更改
edit
操作中的代码,以不标记LastModifiedOnDate
。这可能是他们在论坛上讨论的问题,比如为什么会这样,或者这只是一个bug。