整理DotNetNuke数据库表

时间:2015-01-27 09:22:24

标签: dotnetnuke dotnetnuke-6

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

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

例如,我们有:
dbo.Portalsdbo.PortalSettingsdbo.Profiledbo.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表?感谢。

3 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

事实证明,有一个视图dnn_Lists仍在引用dbo.Lists而没有dnn_前缀。

我修正了这个观点,现在很好。
(PS:事实证明,在用户表中为您登录的人设置IsSuperUser = 1非常有用,因为这样您就可以获得完整的异常详细信息并进行修复。)

由于

答案 2 :(得分:0)

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

如果你有时间和耐心,并且坚持要把事情搞砸,我会一次删除1张桌子并测试它上次破坏的管理功能,直到找到罪魁祸首。这是一个长镜头,但这就是我接近的方式。

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