我继承了DotNetNuke(v6.2.0.1610)站点的维护,我想做的其中一件事就是整理正在使用的数据库表。
看起来可能有两个DNN安装到同一个数据库中(我猜,我不知道它的历史,也找不到),我正在做这个假设,因为有两套DotNetNuke表。
例如,我们有:
dbo.Portals
,dbo.PortalSettings
,dbo.Profile
,dbo.Roles
等。
然而,我们也有相同的集合,前缀为dnn_
-
dbo.dnn_Portals
,dbo.dnn_PortalSettings
,dbo.dnn_Profile
,dbo.dnn_Roles
等。
当我无法加载我的门户时,我花了很长时间撕掉我的头发,当我发现这是因为我正在编辑dbo.PortalAlias
表时我需要编辑dbo.dnn_PortalAlias
换句话。
我想避免将来的维护问题,所以我备份了数据库,并设置了删除没有dnn_
前缀的所有表(web.config指定objectQualifier="dnn_"
)。在删除任何表之前,我努力确保有一个匹配的dnn_
表。
起初它看起来很好 - 加载了门户网站并且所有内容都在那里,我以为我是赢家。但是,当我登录并访问站点管理部分时,那时我开始收到大量错误消息。所以我认为我删除了太多,我恢复了备份,一切都很好 - 门户再次工作。
但是,我真的想摆脱不必要的表,因为毫无疑问,在未来的某些时候我会开始在数据库上做一些工作,忘记dnn_
前缀并浪费一堆时间想知道为什么有些东西不起作用。
所以,作为一个DotNetNuke新手,我正在寻求帮助 - 我怎么知道哪些表正在使用,什么不是,以及如何设置整理SQL Server表?感谢。
答案 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,当您删除这些表时,您就破坏了该模块。