DotNetNuke 6.0: Fix para el módulo de Dashboard en Azure

Esta es una entrada corta en el blog para aquellos que tengan DNN 6.0 en Azure y no puedan acceder al módulo de Dashboard. Hay un procedimiento almacenado que seguía sin ser compatible con SQL Azure en este módulo ya que acceder a “sysfiles”.

Como ya sabrán, en SQL Azure al ser un servicio multi-tenant no hay información sobre los ficheros físicos de SQL, por lo que esta sintaxis genera un error.

ALTER procedure [dbo].[Dashboard_GetDbFileInfo]
AS
    
    SELECT 
        CASE LOWER(RIGHT(filename,3))
            WHEN 'mdf' THEN 'DATA'
            WHEN 'ldf' THEN 'LOG'
            ELSE 'UNKNOWN'
        END as FileType,
        Name,
        size*8 as Size,
        filename
    FROM sysfiles


GO

Para solucionarlo, modificamos el procedimiento almacenado de la siguiente manera, para que sirva tanto en entorno SQL Azure como on-premise:

ALTER procedure [dbo].[Dashboard_GetDbFileInfo]
AS
    
IF ServerProperty('Edition') = 'SQL Azure' 
    BEGIN
        SELECT 
            'DATA' as FileType,
            db_name() as Name,
            (8.0 * SUM(reserved_page_count)) as Size,
            'c:...Not_accesible_on_SQL_Azure.mdf' as Filename
        FROM sys.dm_db_partition_stats    
    END
ELSE
    BEGIN
        EXECUTE sp_executesql N'SELECT 
            CASE LOWER(RIGHT(filename,3))
                WHEN ''mdf'' THEN ''DATA''
                WHEN ''ldf'' THEN ''LOG''
                ELSE ''UNKNOWN''
            END as FileType,
            Name,
            size*8 as Size,
            filename
        FROM sys.files'
    END

GO
Una vez modificado el procedimiento almacenado, ya podemos acceder al módulo de Dashboard para comprobar todos los parámetros de nuestra instancia de DotNetNuke.
Dashboard fix
Espero que sirva de ayuda (o por lo menos para acordarme yo mismo de esto).

Un saludo.

davidjrh

David Rodriguez, is a happy Spanish guy living and working in Tenerife (Canary Islands, Spain) where he was born. He is one of the lucky ones who has the opportunity to work with cutting edge technologies at Intelequia as CTO. He has more than 20 years development background mostly based on Microsoft technologies, designing and architecting highly scalable systems like reservation systems for airlines companies. He has been working with Microsoft Azure since it was on CTP, migrating on-premise systems to the cloud, co-founding the .NET User Group TenerifeDev as well as the CSV company Intelequia Software Solutions. He is also the author of different DNN-Azure open source projects available on GitHub such as caching providers, analytics and Azure Active Directory.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *