Products

Solutions

Resources

Partners

Community

Blog

About

QA

Ideas Test

New Community Website

Ordinarily, you'd be at the right spot, but we've recently launched a brand new community website... For the community, by the community.

Yay... Take Me to the Community!

Welcome to the DNN Community Forums, your preferred source of online community support for all things related to DNN.
In order to participate you must be a registered DNNizen

HomeHomeGetting StartedGetting StartedInstalling DNN ...Installing DNN ...Error retrieving module settings, security roles, etc. in DNN4.5.4Error retrieving module settings, security roles, etc. in DNN4.5.4
Previous
 
Next
New Post
7/22/2007 11:06 PM
 

FYI to all - I just did a DNN 4.5.4 upgrade, and there appears to be an error in the DNN4.5.4 upgrade script, which will affect those of us with non-standard database owner or object qualifier settings.  One of the symptoms is:

A critical error has occurred.
Invalid object name 'Lists'. Invalid object name 'Lists'.

when attempting to access module settings.

The solution is below.  In the file \Providers\DataProviders\SqlDataProvider\04.05.04.SqlDataProvider, the first stored procedure, GetRolesByGroup, is incorrect.  It will cause the error above and a variety of similar errors when retrieving module settings, accessing lists and a variety of other places where security roles and checks are done.  The problem is a missing {databaseOwner}{objectQualifier} tag set before referencing 'Lists' in the query join in this procedure.  The corrected file is below - I've highlighted the missing section:

CUT FROM HERE TO END AND REPLACE IN THE FILE ABOVE:

/************************************************************/
/*****              SqlDataProvider                     *****/
/*****                                                  *****/
/*****                                                  *****/
/***** Note: To manually execute this script you must   *****/
/*****       perform a search and replace operation     *****/
/*****       for {databaseOwner} and {objectQualifier}  *****/
/*****                                                  *****/
/************************************************************/

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'{databaseOwner}[{objectQualifier}GetRolesByGroup]') AND OBJECTPROPERTY(id, N'IsPROCEDURE') = 1)
  drop procedure {databaseOwner}{objectQualifier}GetRolesByGroup
GO

CREATE PROCEDURE {databaseOwner}[{objectQualifier}GetRolesByGroup]

    @RoleGroupId     int,
    @PortalId        int

AS

    SELECT R.RoleId,
           R.PortalId,
           R.RoleGroupId,
           R.RoleName,
           R.Description,
           'ServiceFee' = case when convert(int,R.ServiceFee) <> 0 then R.ServiceFee else null end,
           'BillingPeriod' = case when convert(int,R.ServiceFee) <> 0 then R.BillingPeriod else null end,
           'BillingFrequency' = case when convert(int,R.ServiceFee) <> 0 then L1.Text else '' end,
           'TrialFee' = case when R.TrialFrequency <> 'N' then R.TrialFee else null end,
           'TrialPeriod' = case when R.TrialFrequency <> 'N' then R.TrialPeriod else null end,
           'TrialFrequency' = case when R.TrialFrequency <> 'N' then L2.Text else '' end,
           'IsPublic' = case when R.IsPublic = 1 then 'True' else 'False' end,
           'AutoAssignment' = case when R.AutoAssignment = 1 then 'True' else 'False' end,
           R.RSVPCode,
           R.IconFile
    FROM {databaseOwner}{objectQualifier}Roles R
        LEFT OUTER JOIN {databaseOwner}{objectQualifier}Lists L1 on R.BillingFrequency = L1.Value and L1.ListName = 'Frequency'
        LEFT OUTER JOIN {databaseOwner}{objectQualifier}Lists L2 on R.TrialFrequency = L2.Value and L2.ListName = 'Frequency'
    WHERE  (RoleGroupId = @RoleGroupId OR (RoleGroupId IS NULL AND @RoleGroupId IS NULL))
        AND R.PortalId = @PortalId
    ORDER BY R.RoleName
GO

ALTER TABLE {databaseOwner}{objectQualifier}Tabs ADD
    IsSecure bit NOT NULL CONSTRAINT DF_{objectQualifier}Tabs_IsSecure DEFAULT (0)
GO

DROP VIEW {databaseOwner}{objectQualifier}vw_Tabs
GO

CREATE VIEW {databaseOwner}{objectQualifier}vw_Tabs
AS
SELECT    
    T.TabID,
    T.TabOrder,
    T.PortalID,
    T.TabName,
    T.IsVisible,
    T.ParentId,
    T.[Level],
    CASE WHEN LEFT(LOWER(T.IconFile), 6) = 'fileid'
        THEN
            (SELECT Folder + FileName 
                FROM {databaseOwner}{objectQualifier}Files
                WHERE 'fileid=' + convert(varchar,{databaseOwner}{objectQualifier}Files.FileID) = T.IconFile
            )
        ELSE
            T.IconFile 
        END
    AS IconFile,
    T.DisableLink,
    T.Title,
    T.Description,
    T.KeyWords,
    T.IsDeleted,
    T.SkinSrc,
        T.ContainerSrc,
        T.TabPath,
        T.StartDate,
        T.EndDate,
    T.URL,
        CASE WHEN EXISTS (SELECT 1 FROM {databaseOwner}{objectQualifier}Tabs T2 WHERE T2.ParentId = T .TabId) THEN 'true' ELSE 'false' END AS 'HasChildren',
        T.RefreshInterval,
        T.PageHeadText,
        T.IsSecure
FROM {databaseOwner}{objectQualifier}Tabs AS T

GO

drop procedure {databaseOwner}{objectQualifier}AddTab
GO

CREATE procedure {databaseOwner}{objectQualifier}AddTab

@PortalId           int,
@TabName            nvarchar(50),
@IsVisible          bit,
@DisableLink        bit,
@ParentId           int,
@IconFile           nvarchar(100),
@Title              nvarchar(200),
@Description        nvarchar(500),
@KeyWords           nvarchar(500),
@Url                nvarchar(255),
@SkinSrc            nvarchar(200),
@ContainerSrc       nvarchar(200),
@TabPath            nvarchar(255),
@StartDate          datetime,
@EndDate            datetime,
@RefreshInterval    int,
@PageHeadText        nvarchar(500),
@IsSecure           bit

as

insert into {databaseOwner}{objectQualifier}Tabs (
    PortalId,
    TabName,
    IsVisible,
    DisableLink,
    ParentId,
    IconFile,
    Title,
    Description,
    KeyWords,
    IsDeleted,
    Url,
    SkinSrc,
    ContainerSrc,
    TabPath,
    StartDate,
    EndDate,
    RefreshInterval,
    PageHeadText,
    IsSecure
)
values (
    @PortalId,
    @TabName,
    @IsVisible,
    @DisableLink,
    @ParentId,
    @IconFile,
    @Title,
    @Description,
    @KeyWords,
    0,
    @Url,
    @SkinSrc,
    @ContainerSrc,
    @TabPath,
    @StartDate,
    @EndDate,
    @RefreshInterval,
    @PageHeadText,
    @IsSecure
)

select SCOPE_IDENTITY()

GO

drop procedure {databaseOwner}{objectQualifier}UpdateTab
GO

CREATE procedure {databaseOwner}{objectQualifier}UpdateTab

@TabId              int,
@TabName            nvarchar(50),
@IsVisible          bit,
@DisableLink        bit,
@ParentId           int,
@IconFile           nvarchar(100),
@Title              nvarchar(200),
@Description        nvarchar(500),
@KeyWords           nvarchar(500),
@IsDeleted          bit,
@Url                nvarchar(255),
@SkinSrc            nvarchar(200),
@ContainerSrc       nvarchar(200),
@TabPath            nvarchar(255),
@StartDate          datetime,
@EndDate            datetime,
@RefreshInterval    int,
@PageHeadText        nvarchar(500),
@IsSecure           bit

as

update {databaseOwner}{objectQualifier}Tabs
set    TabName            = @TabName,
       IsVisible          = @IsVisible,
       DisableLink        = @DisableLink,
       ParentId           = @ParentId,
       IconFile           = @IconFile,
       Title              = @Title,
       Description        = @Description,
       KeyWords           = @KeyWords,
       IsDeleted          = @IsDeleted,
       Url                = @Url,
       SkinSrc            = @SkinSrc,
       ContainerSrc       = @ContainerSrc,
       TabPath            = @TabPath,
       StartDate          = @StartDate,
       EndDate            = @EndDate,
       RefreshInterval      = @RefreshInterval,
       PageHeadText       = @PageHeadText,
       IsSecure           = @IsSecure
where  TabId = @TabId

GO

/************************************************************/
/*****              SqlDataProvider                     *****/
/************************************************************/

 

 
New Post
7/23/2007 1:39 PM
 

Great find!

Thanks for posting this for the rest of the community!


-Mitchel Sellers
Microsoft MVP, ASPInsider, DNN MVP
CEO/Director of Development - IowaComputerGurus Inc.
LinkedIn Profile

Visit mitchelsellers.com for my mostly DNN Blog and support forum.

Visit IowaComputerGurus.com for free DNN Modules, DNN Performance Tips, DNN Consulting Quotes, and DNN Technical Support Services
 
New Post
7/23/2007 7:14 PM
 

Thanks as well - I got this same error too - glad I tried the 4.5.4 upgrade on a test site first...and also was pleased to find the solution to the issue here!  This does need to be fixed in the distributed upgrade package - does anyone know if that causes a new version to be release (4.5.5)?

 
New Post
7/26/2007 11:32 AM
 

I didn't see it in Gemini, so I logged it. Thanks for the fix, I'm about to upgrade and this could have really freaked me out!

 
New Post
7/26/2007 11:46 AM
 

kwood wrote

Thanks as well - I got this same error too - glad I tried the 4.5.4 upgrade on a test site first...and also was pleased to find the solution to the issue here!  This does need to be fixed in the distributed upgrade package - does anyone know if that causes a new version to be release (4.5.5)?

I do not believe this would trigger a new release, typically it would have to be something bigger than that.  however I cannot speak on behalf of the core team...


-Mitchel Sellers
Microsoft MVP, ASPInsider, DNN MVP
CEO/Director of Development - IowaComputerGurus Inc.
LinkedIn Profile

Visit mitchelsellers.com for my mostly DNN Blog and support forum.

Visit IowaComputerGurus.com for free DNN Modules, DNN Performance Tips, DNN Consulting Quotes, and DNN Technical Support Services
 
Previous
 
Next
HomeHomeGetting StartedGetting StartedInstalling DNN ...Installing DNN ...Error retrieving module settings, security roles, etc. in DNN4.5.4Error retrieving module settings, security roles, etc. in DNN4.5.4


These Forums are dedicated to discussion of DNN Platform and Evoq Solutions.

For the benefit of the community and to protect the integrity of the ecosystem, please observe the following posting guidelines:

  1. No Advertising. This includes promotion of commercial and non-commercial products or services which are not directly related to DNN.
  2. No vendor trolling / poaching. If someone posts about a vendor issue, allow the vendor or other customers to respond. Any post that looks like trolling / poaching will be removed.
  3. Discussion or promotion of DNN Platform product releases under a different brand name are strictly prohibited.
  4. No Flaming or Trolling.
  5. No Profanity, Racism, or Prejudice.
  6. Site Moderators have the final word on approving / removing a thread or post or comment.
  7. English language posting only, please.
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out
What is Liquid Content?
Find Out