整理 DotNetNuke 数据库表

Tidy up DotNetNuke database tables

我继承了 DotNetNuke (v6.2.0.1610) 站点的维护工作,我想做的其中一件事就是整理正在使用的数据库 table。

看起来可能有两个 DNN 安装到同一个数据库中(我猜,我不知道它的历史也无法找到),我做这个假设是因为有两个集合DotNetNuke tables.

例如,我们有:
dbo.Portalsdbo.PortalSettingsdbo.Profiledbo.Roles

不过,那我们也有同一套,前缀是dnn_-
dbo.dnn_Portalsdbo.dnn_PortalSettingsdbo.dnn_Profiledbo.dnn_Roles

当我无法加载我们的门户网站时,我花了很多时间来抓狂,当我发现这是因为我正在编辑 dbo.PortalAlias table 并且我需要编辑dbo.dnn_PortalAlias table 代替。

我想避免这种未来维护的麻烦,所以我备份了数据库,并着手删除所有没有 dnn_ 前缀的 table(web.config 指定 objectQualifier="dnn_").在删除之前,我努力确保有匹配的 dnn_ table。

起初它看起来不错 - 门户加载并且所有内容都在那里,我以为我是赢家。然而,当我登录并访问网站管理部分时,我开始收到很多错误消息。所以我想我删除的太多了,我恢复了备份,一切都很好 - 门户再次工作。

但是,我真的很想摆脱不必要的 tables,因为毫无疑问,在未来的某个时候我会开始在数据库上做一些工作,忘记 [=14] =] 前缀并浪费大量时间想知道为什么某些东西不起作用。

所以,作为 DotNetNuke 的新手,我需要一些帮助 - 我如何才能知道哪些 table 正在使用,哪些未使用,以及我如何着手整理SQL 服务器 tables?谢谢。

我建议您只删除具有 "dnn_" 前缀的等效表。
DNN 数据库应至少包含 "aspnet_" 个前缀表,用于门户上的身份验证。
然后,您可以有一些扩展可以使用没有 "dnn_" 前缀的表。这取决于这些扩展在安装过程中使用的 sql 脚本。我希望这些扩展不会在没有 "dnn_" 前缀的情况下 运行 查询 dnn 表。否则它可以解释您遇到的错误。
您可以使用 SQL Server Profiler 来检查它。

原来有一个视图 dnn_Lists 仍在引用 dbo.Lists 而没有 dnn_ 前缀。

我修复了这个视图,现在好了。
(PS:事实证明,在用户 table 中设置 IsSuperUser = 1 对于您登录的身份很有用,因为这样您就可以获得完整的异常详细信息并可以修复它。)

谢谢

在没有 "dnn_" 的情况下删除所有 table 是有意义的,但你说你遇到了问题。

如果您有时间和耐心并且坚持收拾东西,我会一次删除 1 个 table 并测试上次损坏的管理功能,直到找到罪魁祸首。这是一个远景,但这就是我的方法。

这里可能发生的情况是,您可能安装了忽略 objectQualifier 的第三个模块,当您删除那些 tables 时,您随后破坏了该模块。