Как сделать запрос базы данных DNN (DotNetNuke), чтобы найти страницы, которые были недавно изменены - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь найти SQL-запрос, который может найти все веб-страницы на сайте DNN, которые были отредактированы недавно, но ни одно из значений CreatedOnDate или LastModifiedOnDate не кажется ужасно полезным - например, * Столбец 1003 * в таблицах HtmlText, похоже, обновляется всякий раз, когда редактор содержимого нажимает кнопку "изменить" (даже если они фактически не вносят никаких изменений).

Например, этот запрос возвращает много URL-адресов для страниц, которые не изменились на самом деле с 2018-01-01:

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'

1 Ответ

0 голосов
/ 03 мая 2018

Даты модификации отслеживаются для каждой вкладки, настроек TabModule и содержимого модуля (в зависимости от самого модуля). Даже HTMLText. И да, даты обновляются при нажатии кнопки «Обновить», независимо от фактических изменений, внесенных в настройки или содержимое.

Однако LastModifiedOnDate не обновляется только при открытии настроек.

И ваш запрос кажется неверным. Я запустил его, и он не вернул последний HTMLText, который я изменил. Только при удалении Inner Join на TabUrls все модули были возвращены. Поэтому я бы сделал это:

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
...