A raíz de algunos post y preguntas de varias personas sobre como extraer los archivos almacenados en la base de datos de contenido de SharePoint (WSS_Content) pues nos dedicamos a indagar un poco, por supuesto advertir que las tablas a las que hacemos mención en el articulo están sujetas a cambios con actualizaciones de versiones etc. pero de momento sirve. Por otro lado alguno seguro que se está preguntando para que queremos extraer esa información si ya tenemos SharePoint, no voy a entrar a explicar los detalles pero podéis creerme que en determinadas situaciones resulta útil. Este procedimiento no tiene en cuenta el control de versiones ni la propiedad de los archivos obtenidos, pero estos se pueden obtener consultando directamente las tablas importadas a la base de datos auxiliar.

  1. En primer lugar y para no perder el soporte del fabricante del producto (Microsoft) no tocar donde no se debe. Crearemos una base de datos para exportar 2 tablas desde wss_content, si no es en producción mejor. La llamamos Wss_Content_AUX por ejemplo.
  2. Exportamos desde Wss_content de producción a la base de datos creada Wss_Content_AUX las tablas dbo.AllDocs y dbo.AllDocStreams completas.
  3. En la base de datos Wss_Content_AUX creamos la siguiente vista con objeto de ofrecer todas las columnas que necesitamos a la tarea de Exportar Columnas de Integration Services mas adelante.
    use Wss_Content_AUX
    go
    Create view Documentos_en_SPS
    as
    Select LEAFNAME, A.ID, DirNAme,Content
    from dbo.AllDocs A
    join dbo.AllDocStreams B
    on A.id=b.id
    GO
  4. Con Integration Services creamos un sencillo paquete que contenga un origen de datos apuntando a Wss_Content_AUX como base de datos y a la vista Documentos_en_SPS como tabla o vista.
  5. Creamos una variable para almecenar la parte fija de la ruta de disco donde se ubicaran los ficheros.
  6. Agregamos una columna derivada para calcular el nombre completo concatenando la variable con el contenido de la columna LEAFNAME que trae el nombre del archivo como se muestra en la figura.
  7. Por último agregamos la tarea de exportar columna especificando que la columna a exportar es content y la ruta la columna Path agregada con la columna derivada un paso antes.

 Este es al aspecto que presenta nuestro flujo de datos una vez creado.