SharePoint 2010: ¿Se soporta o no una instalación de SharePoint sobre Azure?

Pues de forma oficial por parte de Microsoft, no en cuanto a qué no hay persistencia de datos por lo que la instalación que se realice se puede perder. Qué no se soporte no implica que no se pueda hacer, de echo y a modo de ejemplo os dejo esta referencia en la que podéis ver el proceso de como hacer una instalación de SharePoint Foundation 2010 en un rol de ASP.NET de Windows Azure…veremos si a futuro cambia esto.

SharePoint2010_thumb

SharePoint 2010: ¿Qué pasa con columnas de tipo varbinary en tipos de contenido externo? (I)

Cómo sabéis, SharePoint 2010 permite integra datos de sistemas de negocio en sitios a través de modelar tipos de contenido externo ya sea con SharePoint Designer 2010 (SPD 2010) o Visual Studio. Una inconveniente al que nos podemos enfrentar no tanto en el modelado de estos ECTs, sino en su consumo es el de como tratar a datos de tipo varbinary como puedan ser imágenes o archivos que se hayan guardado en una tabla de base de datos. Por ejemplo, podemos tener una tabla DimProduct en la que almacénenos una foto de cada producto registrado en la misma…la pregunta es: ¿Cómo se tratan esas fotos en una lista externa?

   1: INSERT INTO [My_DW].[dbo].[DimProduct]

   2:            ([ProductAlternateKey]

   3:            ,[ProductSubcategoryKey]

   4:            ,[ProductEmployeeKey]

   5:            ,[ProductName]

   6:            ,[StandardCost]

   7:            ,[NewProductFlag]

   8:            ,[ListPrice]           

   9:            ,[ProductDescription])

  10:      VALUES

  11:            ('1'

  12:            ,1

  13:            ,1

  14:            ,'ABRIGO VIVOS POLIPIEL'

  15:            ,'39.99'

  16:            ,1

  17:            ,'59.95'           

  18:            ,'ABRIGO VIVOS POLIPIEL')

  19: GO

  20:  

  21: UPDATE [My_DW].[dbo].[DimProduct]

  22: SET    [ProductPhoto] = (SELECT *

  23:                 FROM   OPENROWSET(BULK 'C:\Temp\MyDW_images\abrigo1.JPG',

  24:                        SINGLE_BLOB) AS x)

  25: WHERE  [ProductAlternateKey] = '1'

Lo primero que veremos es que el modelado del ECT respeta la definición de la columna de tipo varbinary en este caso y la mapea a un tipo byte[] de .NET Framework:

  • En primer lugar, y simplemente a título informativo, si realizamos una consulta T-SQL a la tabla en cuestión veremos que la columna de tipo varbinary muestra un “churro” binario que representa la foto en este caso.
  • Si creamos el ECT en SPD 2010, podremos comprobar que si es capaz de interpretar la columna y por lo tanto incorporarla a su definición
  • Sin embargo, si creamos una lista externa a partir de ese ECT nos encontraremos con qué no hay ni rastro de la citada columna y que no se ha creado a nivel de lista una columna que contenga la imagen…vaya fail.
image image image
  • Si exportamos la definición del ECT desde SPD 2010, podremos comprobar en cambio que s se incluye la columna mapeada a un tipo byte[].

image

  • Por lo tanto, el ECT si tiene mapeado el atributo y en teoría deberíamos poder consumir la información pero ya desde desarrollo…y este es tema para otro post más adelante.
   1: <Parameter Direction="In" Name="@ProductPhoto">

   2:   <TypeDescriptor TypeName="System.Byte[]" CreatorField="true" Name="ProductPhoto" />

   3: </Parameter>