0

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

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

例如,我们有:
dbo.Portals, dbo.PortalSettings, dbo.Profile,dbo.Roles等。

但是,我们也有相同的集合,以dnn_-
dbo.dnn_Portalsdbo.dnn_PortalSettingsdbo.dnn_Profiledbo.dnn_Roles等为前缀。

当我无法加载我们的门户网站时,我花了很长时间撕扯头发,当我发现这是因为我正在编辑dbo.PortalAlias表格而我需要编辑表格时dbo.dnn_PortalAlias

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

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

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

所以,作为一个 DotNetNuke 新手,我正在寻求一些帮助 - 我如何知道哪些表正在使用,哪些未使用,以及如何着手整理 SQL Server 表?谢谢。

4

3 回答 3

0

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

于 2015-01-27T10:02:19.613 回答
0

原来有一个视图,dnn_Lists它仍然dbo.Lists在没有 dnn_ 前缀的情况下引用。

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

谢谢

于 2015-01-27T16:13:29.443 回答
0

删除所有没有“dnn_”的表是有意义的,但你说你遇到了问题。

如果您有时间和耐心并且坚持整理,我会一次删除 1 个表并测试它上次破坏的管理功能,直到找到罪魁祸首。这是一个很长的镜头,但这就是我的方法。

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

于 2015-01-28T14:39:12.043 回答