lunes, 16 de junio de 2008

Nueva aplicacion web en Sharepoint y PPS (Error, horror)

Hola,

Pues el post de hoy está relacionado con Sharepoint y Performance Point Server (PPS)

Erase una vez, un joven desarrollador adentrándose en el maravilloso mundo de BI con PPS cuando un buen día se le ocurrió hacer un cuadro de mandos y deployarlo en un maravilloso sitie de WSS/MOSS que se había creado a tal efecto.
Pero cuando menos se lo esperaba apareció un terrible error que decía asi: "The control type 'Microsoft.PerformancePoint.Scorecards.WebParts.ScriptManagerLoader' is not allowed on this page. The type is not registered as safe."

No le quedo más remedio que ir al web.config de dicha aplicación web y añadir bajo la sección <safecontrols> la siguiente línea:

<SafeControl Assembly="Microsoft.PerformancePoint.Scorecards.WebParts, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="Microsoft.PerformancePoint.Scorecards.WebParts" TypeName="*" Safe="True" />

Así que cuando creía que habia ganado la batalla y se dispuso a ver su precioso cuadro de mandos le sorprendieron los siguientes mensajes de error por cada webpart de pps:

"Web part Error unexpected error has occured"

Que horror... ¿y que podía hacer él?


Tras muchos intentos fallidos y cuando todo parecía perdido, Internet-Google apareció en su rescate y el siguiente blog le solucionó la vida:

http://blogs.msdn.com/performancepoint/archive/2007/11/12/how-do-i-deploy-the-monitoring-web-part-on-a-separate-sharepoint-web-application-on-the-same-sharepoint-web-server.aspx

En resumidas cuentas la solución consistía en hacer lo siguiente:

- Hacer deploy de PSCWebParts.cab en nuestro web application; bien por consola o desde el propio MOSS
- Añadir a nuestra app la siguiente master page:C:\Program Files\Microsoft Office PerformancePoint Server\3.0\Monitoring\Assemblies\PerformancePointDefault.master
- Abrir un web.config de un sitio que funcione correctamente (AdventureWorks) y copiar todas las líneas que no aparecen en el web.config de nuestro site.

Con esto nuestro joven desarrollador pudo dormir tranquilo y comer perdices soñando con su fabuloso cuadro de mando.

Salu2

sábado, 14 de junio de 2008

Mi PPS no me muestra bases de datos

Hola,

Hoy toca solucionar un problema que me he encontrado cuando he querido crear un Datasource a mi base de datos de Analysis Services y Performance Point Server no me la mostraba en el desplegable...

Solución:

Dentro de Roles, en el DataWarehouse, crear un nuevo perfil con full control y como Membership asginarle Everyone (Todos).

Con esto deberia ser suficiente para que desde PPS podamos engancharnos sin problemas.

Salu2

martes, 10 de junio de 2008

Dimensión de tiempo con granularidad de horas.....

Hola a todos,

Hoy esto va de un poquito de BI. Resulta que para una prueba necesitaba tener una tabla de dimensión de tiempo con granularidad de horas y por lo que he visto SSAS permite crear esta dimensión pero se queda en el día. Buscando en la web (no mucho la verdad) he encontrado este enlace que proporciona un script para crear y cargar la tabla:

http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3353754&SiteID=1

Y el script es el siguiente:

/***************************************
Script: Creates and Populates an Hour Dimension Table

Note: This script does hours and minutes. If seconds are needed,
then modify the datepart on the last line that increments the date.
Obviously the table will be bigger when you include seconds.

Author: Ibrahim Hafidh
Date: 10/11/2005
****************************************/

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[dimHour]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
drop table [dbo].[dimHour]
GO

CREATE TABLE dimHour
(
HourID INT IDENTITY (1, 1) NOT NULL PRIMARY KEY
, TheDate DATETIME NOT NULL
, TheTime Datetime NOT NULL
, MilitaryHour INT NOT NULL
, StandardHour INT NOT NULL
, TheMinute INT NOT NULL
, TheSecond INT NOT NULL
, Standard varchar(2) NOT NULL
)


DECLARE @startdate DATETIME
DECLARE @enddate DATETIME
DECLARE @date DATETIME

SET @startdate = '1/1/2005 12:00:00 AM'
SET @enddate = '1/1/2005 23:59:59 PM'
SET @date = @startdate

WHILE @date <= @enddate
BEGIN
INSERT INTO dimHour (TheDate, TheTime, MilitaryHour, StandardHour, TheMinute, TheSecond, Standard)
VALUES (
@date --TheDate
, convert(nvarchar(11), @date, 114) --Time format
, DATEPART(hh, @date) --Military Hour
, CONVERT(varchar(2),
CASE
WHEN DATEPART([hour], @Date) > 12 THEN CONVERT(varchar(2), (DATEPART([hour], @Date) - 12))
WHEN DATEPART([hour], @Date) = 0 THEN '12'
ELSE CONVERT(varchar(2), DATEPART([hour], @Date))
END) -- Standard Hour
, DATEPART(mi, @date) --Minute
, DATEPART(ss, @date) --Second
, CASE WHEN DATEPART(hh, @date) between 0 and 11 THEN 'AM' ELSE 'PM' END
)


SET @date = DATEADD(mi, 1, @date) -- ** Modify the datepart to ss if seconds are needed

END



Por otra parte dejo también este enlace muy útil de conversiones de fechas en SQL Server 2005

http://www.dreamincode.net/forums/showtopic42872.htm

Y esto es todo por hoy....


A2

viernes, 6 de junio de 2008

Clonar máquinas con Virtual PC

Hola a todos,

En primer lugar quiero pedir disculpas por lo poco que me prodigo por estos lares pero las razones son fundamentadas, primero y principal es que mi reciente paternidad hace que el tiempo que pueda dedicar sea más bien escaso, en segundo lugar, mi Proyecto Fin de Carrera me esta quitando el resto de poco tiempo que tengo (por fin este domingo me lo quito de encima).

Bueno, vayamos al grano, la razón que ha hecho que escriba este post es el siguiente, resulta que he generado dos máquinas virtuales para un entorno de desarrollo para un par de personas que obviamente se han copiado y ejecutan desde sus propios PC's. Cual ha sido mi sorpresa cuando nos daba errores de "time out" con la base de datos y hacia cosas bastante raras. Tras un poco de investigación me di cuenta que el servidor DHCP del cliente nos estaba dando la misma IP y tras marear un poco al de sistemas he descubierto que era un error muy habitual pero que me ha quitado casi todo un día descubrirlo.

Cuando se copian máquinas virtuales de Virtual PC se conserva la misma MAC en todas las máquinas clonadas y por tanto cualquier servidor DHCP se piensa que es la misma máquina y asignara la misma IP con todos los problemas que eso conlleva.

Solución:

- Copiar únicamente el disco duro virtual y crear una asignación nueva
- Editar el archivo .vmc con el bloc de notas y buscar la clave <ethernet_card_address>, borrar la MAC que tenga y dejarlo de la siguiente manera <ethernet_card_address type="bytes>ethernet_card_address>. De esta forma la próxima vez que arranquemos la máquina virtual nos asignará una nueva MAC diferente a la del resto de las máquinas clonadas.

No se porqué pero pero cosas así hacen que cada día vea que entre Virtual PC y VMWare no hay color :-)

Salu2