0

如何修复由于权限表导致的 DNN 导入错误。

背景:我花了一些时间来解决这个问题,我想发布解决方案以防其他人遇到这个问题。

-

尝试为客户端导入 Dot Net Nuke v5.2.3 导出文件。它们是企业版/专业版,对于我们的开发站点,我们使用的是社区版。

我在尝试导入时遇到了这个错误:

解析门户模板时出错,违反 UNIQUE KEY 约束“IX_FolderPermission”。无法在对象“dbo.FolderPermission”中插入重复键。重复键值为 (18, 5, 9, )。该语句已终止。在 System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,布尔 breakConnection) 在 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) 在 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior,SqlCommand cmdHandler,SqlDataReader dataStream , BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) 在 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() 在 System.Data.SqlClient.SqlDataReader.get_MetaData() 在 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior,

4

1 回答 1

0

错误的根源是新的 DNN(社区版本)安装没有“权限”表中所需的所有数据。

当我查看新的权限表时,我发现它丢失了所有 ID 大于 7 的行。要修复此错误,我们需要导入丢失的权限行。

解决这个问题的两种方法,(但在尝试导入之前都做这两个)。

选项1:

如果您有权访问导出站点的数据库源,则可以运行 SQL 命令来导入您需要的行。

新数据库:DNN-NEW-DB 源数据库:DNN-SOURCE-DB

  INSERT INTO [DNN-NEW-DB].[dbo].[Permission]
  SELECT [PermissionCode]
        ,[ModuleDefID]
        ,[PermissionKey]
        ,[PermissionName]
        ,[ViewOrder]
        ,[CreatedByUserID]
        ,[CreatedOnDate],[LastModifiedByUserID],[LastModifiedOnDate]
   FROM [DNN-SOURCE-DB].[dbo].[Permission]
   WHERE[DNN-SOURCE-DB].[dbo].[Permission].[PermissionID] > 7
   ORDER BY permissionid

--

选项 2:

就是手动导入丢失的记录。我不确定我是否得到了你需要的一切,如果我错过了什么,请告诉我:

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_FOLDER', -1, 'DELETE', 'Can Delete', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_FOLDER', -1, 'ADD', 'Add', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_FOLDER', -1, 'COPY', 'Copy', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_FOLDER', -1, 'MANAGE', 'Manage', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'CONTENT', 'Content', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'ADD', 'Add', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'COPY', 'Copy', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'DELETE', 'Delete', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'EXPORT', 'Export', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'IMPORT', 'Import', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'MANAGE', 'Manage', 9999);

INSERT INTO Permission (PermissionCode, ModuleDefID, PermissionKey, PermissionName, ViewOrder)
    VALUES ('SYSTEM_TAB', -1, 'Navigate', 'Navigate', 9999);    
于 2013-07-01T00:30:52.703 回答