Our Blogs
English
Español
Skip Navigation Links
News
Our Team
Mentoring
BICorner
Go to home page
Go Search

 
Other Blogs
There are no items in this list.

Our Blogs > Español > BICorner
Como instalar Integration Services en un entorno cluster. (Capítulo 3)

SSIS formando parte del servicio cluster de SQL Server

Si se desea agregar el servicio SSIS al cluster de SQL Server, entonces se puede utilizar el mismo disco compartido incluido en el grupo de SQL o se puede agregar un disco específico para el almacenaje y la configuración de SSIS.

Se va a utilizar la misma dirección IP y nombre de red por lo que solo será necesario crear el recurso de Servicio Genérico siguiendo los pasos que se explicaron en el capítulo anterior.

Una vez ejecutados esos pasos, el grupo de SQL Server tendrá un aspecto similar al que aparece en el Cuadro 8.

Cuadro 8 - SSIS como recurso dentro del grupo de recursos de SQL Server

Como instalar Integration Services en un entorno cluster (Capítulo 2).

SSIS como un servicio cluster independiente

Si se elige esta opción habrá que:

  • Crear un recurso de disco físico específico para almacenar la información que permitirá la emulación del cluster. O lo que es lo mismo, definir un sitio donde almacenar los archivos y los paquetes comunes de la configuración (si se decide almacenarlos en un disco físico en vez de una base de datos MSDB).
  • Identifique una dirección IP estática y nómbrelo para el servicio de SSIS. Este punto es válido si no se va a utilizar un grupo existente del cluster.

Una vez identificada la información anterior se puede proceder a la creación del grupo.

  1. Abrir la consola de administración del cluster en cualquiera de los nodos.
  2. Añadir una nueva aplicación
  3. Añadir los siguientes recursos:
    1. Un disco compartido.
    2. Un nombre de red.
    3. Una dirección IP estática.
    4. Un servicio genérico. Éste es el elemento más interesante porque definirá el servicio cluster de SSIS. Este recurso tendrá dependencias en la dirección IP y el disco compartido, si estos recursos no están disponibles, entonces el servicio no podrá activarse. Para configurar con éxito este recurso hay que definir el nombre y la clave del registro de Windows (verificar la localización de la clave del registro en su servidor) que se utilizará como se muestra en el Cuadro 5 y el Cuadro 6.

    Cuadro 5 - Ventana de parámetros del servicio genérico

    Cuadro 6 - Clave del registro

    1. Ahora solo hay que activar el grupo de recursos. La consola tendra un aspecto parecido a la que se muestra en el Cuadro 7.

Como instalar Integration Services en un entorno cluster. (Introducción)

Durante varios capítulos vamos a explicar las distintas fases para la instalación y configuración de SSIS dentro de un entorno cluster.

La primera consideración que debemos tener en cuenta es que SSIS no es un servicio cluster, así que no puede ser tratado como un servicio cluster normal. Sin embargo, Microsoft proporciona un alternativa para instalar y para manejar SSIS en un entorno cluster.

Hay varias ventajas y desventajas a revisar antes de la creación SSIS como un servicio cluster. Pero el propósito de este artículo es explicar el proceso para instalarlo por lo que no vamos a desarrollar ninguna discusión sobre pros y contra.

Tenemos dos alternativas para instalar SSIS como parte de un entorno cluster, como un servicio del cluster por sí mismo o como parte del servicio cluster de SQL Server. En ambos casos, para tener más control en el proceso de instalación, la situación ideal sería haber instalado previamente el servicio cluster de SQL Server.

Para cualquiera de los casos, SSIS necesita ser instalado en cada nodo del cluster, o lo que es lo mismo, habrá que ejecutar el proceso de instalación tantas veces como nodos vayan a formar parte del servicio cluster de SSIS. El proceso de instalación de SSIS a seguir es el mismo que se sigue al instalarlo como servicio independiente en un servidor aislado. Una vez haya comenzado el proceso de la instalación, asegurarse de chequear únicamente la opción SSIS (todos los otros elementos habrían sido instalados como parte de la instalación cluster de SQL Server). Como se puede ver en el Cuadro 1, SSIS no muestra la opción para ser instalado como un failover cluster.

Cuadro 1 - Opción a seleccionar para instalar SSIS

Como instalar Integration Services en un entorno cluster (Capítulo 1).

En nuestro ejemplo tenemos un cluster llamado CTest compuesto de dos nodos (Romeo y Hamlet). En este cluster ya tenemos instalado el servicio cluster para SQL Server con el nombre Horacio.

Una vez hayamos instalado SSIS en Hamlet podremos conectar con él pero no con Romeo (Cuadro 2). Como indicamos antes, necesitamos instalarlo como si fueran servidores independientes. Pero hay una situación que podría hacernos pensar que SSIS se instala automáticamente como servicio cluster. Cuando SSIS se ha instalado en el nodo activo del cluster (Hamlet en este caso), si se intenta conectar a SSIS en CTest u Horacio, se conectará con éxito (Cuadro 3), sin embargo, si se apaga Hamlet convirtiendo Romeo en el nodo activo, la conexión de SSIS se perderá (Cuadro 4). Esto significa que SSIS no está trabajando aún como un servicio cluster.

Cuadro 2 - Conectividad disponible solo en el nodo instalado

Cuadro 3 - SSIS aparece disponible en la instancia del cluster

Cuadro 4 - SSIS no aparece disponible en la instancia del cluster

Una vez se ha instalado SSIS en ambos servidores podemos proceder a incluirlo como parte del cluster.

La dificultad del siguiente paso es determinar en qué grupo de recursos del cluster se va a añadir el servicio SSIS. Si decidimos fijarlo en el mismo grupo de SQL Server, entonces el servicio de SSIS será parte del cluster de SQL Server, pero si se decide incluirlo como recurso en un grupo nuevo o existente (pero diferente del grupo donde reside SQL Server) entonces SSIS será tratado como servicio cluster independiente del cluster de SQL Server.

Haciendo backup de los paquetes almacenados en MSDB

Cualquiera que haya estado utilizando paquetes de Integration Services se ha planteado si almacenarlos en el File System o en la base de datos MSDB, de hecho hay por ahí blogeados algunos artículos donde se habla de los pros y contras de cada uno de estos tipos de almacenamiento. Uno de los contras que he leído en más de una ocasión es que necesitamos hacer backup de la base de datos MSDB, la cual incluye, entre otras muchas cosas, dichos paquetes. El problema es cuando quiero restaurar uno o varios paquetes, y evidentemente, no puedo restaurar la MSDB con todo su contenido en mi servidor.

Lo ideal sería tener alguna forma de hacer copia sólo de los paquetes de Integration Services, no de toda la base de datos. Pues bien, mi compañero Francisco González tuvo idea excelente, además de simple, para conseguir este cometido, la cual ha puesto en práctica en diversas ocasiones. Hacer una copia de estos archivos almacenados en la base de datos MSDB a partir de la información que hay en sus tablas y de las tareas que nos proporciona Integration Services. Para ello, se aplica la misma técnica propuesta por Pablo Ahumada en este mismo blog, en el artículo Extracción de archivos almacenados en la base de datos de contenido de Sharepoint con Integration Services

Mi misión es transmitir la propuesta de Francisco, y las bases para entenderla y ponerla en práctica:

En primer lugar, debemos saber que los paquetes se almacenan en una tabla llamada sysdtspackages90. Lo podemos comprobar fácilmente ejecutando lo siguiente:

use msdb

select * from sysdtspackages90

 

Ahora bien, se sale del ámbito de este documento entrar en detalle del contenido de todas las columnas que hay en esta tabla, nos vamos a centrar en las columnas:

  • Name: nombre del paquete
  • Id: identificador del paquete
  • Packagedata: es el paquete almacenado en un campo de tipo image
  • FolderId: carpeta donde se almacena.

Hay que tener en cuenta, que además de en el sistema de ficheros, en la base de datos MSDB también se pueden organizar los paquetes de forma lógica en carpetas.

Por tanto podemos obtener la información que necesitamos, podemos ejecutar la siguiente instrucción:

select name, id, packagedata, folderid from sysdtspackages90

 

Para complementar la gestión de estas carpetas, tenemos una tabla llamada sysdtspackagefolders90 que tiene una relación 1:N con sysdtspackages90, además de una estructura jerárquica formada por las columnas folderid y parentfolderid.

select * from sysdtspackagefolders90

 

 

Pues bien, una vez hecha la introducción, vamos a ponernos manos a la obra, vamos a construir nuestro paquete de Integration Services que haga una copia de los paquetes .dtsx a nuestro sistema de ficheros.

En primer lugar vamos a crear un proyecto de Integration Services con BIDS (Business Intelligence Developement Studio), y en él crearemos un paquete llamado 'BackupPaquetesMSDB.dstx'. Dicho paquete contiene una tarea de flujo de datos llamada 'Backup Paquetes MSDB' y una variable de usuario llamada Path, de tipo string, cuyo valor por defecto será la ruta donde quiero almacenar los paquetes, en mi caso 'D:\Borrar\paquetes\'

 

La tarea de flujo de datos consta de los siguientes elementos:

  • Un origen de datos Ole Db que obtiene la información de sysdtspackages90 en MSDB.
  • Una tarea de columna derivada que obtiene el nombre del paquete incluyendo la ruta y la extensión .dtsx
  • Una tarea para exportar la columna de tipo image que contiene el paquete.

A continuación vamos a detallar la creación de cada uno de estos componentes. Comenzaremos creando un Origen de datos Ole Db que obtenga información de los paquetes almacenados en MSDB

Obtenemos el nombre completo del paquete, incluyendo la ruta y la extensión .dtsx

Nota: si se el software en inglés sería @[user::path]. Desafortunadamente se ha realizado esta traducción, lo que habrá que tener en cuenta, ya que nos afectará al uso de variables de usuario en nuestros paquetes.

Utilizamos la tarea exportar columna, utilizando la columna derivada NombreCompleto obtenida anteriormente para exportar los paquetes al sistema de ficheros a la carpeta indicada anteriormente.

Tras ejecutar el paquete, si accedemos a dicha carpeta por el explorador de Windows podemos comprobar que allí están todos los paquetes almacenados.

Aquí tenemos la base para la realización de copias de los paquetes de integration services. Una vez construido el paquete, podremos desplegarlo en el servidor y, como con cualquier otro paquete, podremos crear un job que incluya una programación que lo ejecute periódicamente.

Dejamos al lector la tarea de realizar paquetes que mejoren dicha exportación. Por ejemplo, generando un sistema de carpetas en el File System con la misma estructura de carpetas que tenemos en MSDB basándonos en la tabla sysdtspackagesfolders90, copiando sólo algunos de los paquetes que cumplan ciertas condiciones (un patrón concreto en el nombre, en un rango de fechas, etc.).

Ya podéis implementar vuestro sistema de backup y adaptarlo a vuestras necesidades !!!

Saludos
Salvador Ramos
sramos@solidq.com

 

Demos Novedades SQL Server 2008

Como lo prometido es deuda, y como más vale tarde que nuncaJ, aquí van las demos de las novedades de BI para SQL Server 2008.

 

Novedades SSAS 2008 Demo

Esta demo consta de dos partes:

1.       Se hace un breve repaso sobre las nuevas DMVs creadas en 2008 para monitorizar Analisis Services.

2.       Se crea una solución SSAS desde cero mostrando los nuevos asistentes para la generación de cubos y dimensiones.

 

Novedades SSIS 2008 Demo

Esta demo consta de

1.       Muestra un ejemplo de cómo trabajar con los nuevos tipos de datos fecha y hora de SQL 2008-03-18.

2.       Las novedades para la transformación Lookup y como trabajar con ellas.

3.       Un vistazo rápido sobre los conectores ADO.NET

4.       Como trabajar con la nueva tarea data profiling y como visionar posteriormente los datos obtenidos a través del data Profile viewer.

 

Novedades SSRS 2008 Demo

                Esta demo hace un repaso por el nuevo diseñador de informes, muestra como trabajar con el nuevo objeto Tablix así como un repaso sobre las mejoras de los gráficos y los nuevos controles gauge.

 

Un saludo a todos

 

SQL Server 2008 Jumpstart para partners de Microsoft España

Novedades en Integration ServicesHola, siguiendo al seminario de formación que hicimos los días 13 y 14 de febrero en las instalaciones de Microsoft Ibérica, durante la próxima semana publicaremos los videos de las demostraciones que se hicieron y de las que no dio tiempo a completar.

 

Para los que no pudisteis asistir (aforo completoJ),

 

La agenda de Business Intelligence fue la siguiente:

 

Novedades en Integration Services

·         VSTA

·         Soporte a nuevos tipos de datos

·         Lookup

·         Conexiones ADO.NET

·         Data Profiling

·         Escalabilidad flujo de trabajo

·         Mejoras herramientas exportación/importación

·         SuperDump

Novedades en Analysis Services

·         Pensado para rendir

·         Alertas AMO

·         Diseño de dimensiones

·         Diseño de cubos

·         Diseño de agregaciones

·         Monitorización de recursos - DMV

·         Mejoras cálculos MDX

·         Escalabilidad

·         Writeback

·         Data Mining

Novedades en Reporting Services

·         Nueva arquitectura

·         Diseñador de informes

·         Gráficos

·         Tablix

·         Gauges

 

La agenda del motor relacional la podéis encontrar en http://blogs.solidq.com/ES/ElRinconDelDBA/default.aspx

Material en español:

Novedades en Integration Services

Novedades en Analysis Services

Novedades en Reporting Services

Material en inglés:

Integration Services News

Analysis Services News

Reporting Services News

Por nuestra parte, fue agradable vuestra presencia, y deseamos que os haya sido de mucha utilidad el evento.

 

 

Minería de datos en Integration Services ¿esquemas? ¿eso que es?

Es curioso como los programadores a lo largo del mundo cometemos los mismos errores (¿omisiones?) una y otra vez, éste en particular me tuvo una horita dando vueltas.

La historia comienza cuando queremos añadir capacidades de forecasting con el algoritmo de series de tiempo a un cubo (luego publicaré un post sobre el paso a paso para hacer esto). El caso es que me gusta hacer las cosas bien y creé esquemas específicos para que las tablas de previsión estuviesen en su sitio. Cuál es mi sorpresa, cuando veo que , mejor dicho, cuando no veo que los datos lleguen a la tabla mientras que Integration Services dice que todo fue genial.

Como siempre, Profiler al rescate, perdido y desconcertado con la situación enchufé profiler, primero al motor analítico para ver que se ejecutaba la consulta, (ya comprobé que en previo si devolvía los datos) , después al relacional y … bingo.. ahí estaba el problema.. resulta que el comando que se ejecutaba era algo así como

¿Veis el detalle? ¿a qué esquema pertenecerá [Temporales.ForecastingXXXX], pues lamentablemente no al esquema temporales, al que yo quería asignar sino al esquema por defecto, en mi caso como en la mayoría al esquema dbo.

El corchete puesto "por si acaso" hace que mi tabla se llame realmente dbo.[TemporalesForecastingXXX] lo que hace que un servidor pierda un ratito antes de darse cuenta de donde está el error. Lo reportaré y lo probaré en SQL Server 2008 (Katmai) a ver si mantiene este bug.

 

Saludos desde Murcia.

Miguel Egea

Novedad en SQL 2008 SSIS, Back Pressure

En 2005, No teníamos forma de saber si una fuente de datos en un flujo de datos era rápida o lenta.  De forma que cuando diseñábamos teníamos que intuirlo.

En 2008 podemos saber si una fuente de datos ha llenado sus buffers y queda en espera debido a que la siguiente transformación es quien está ralentizando la ejecución.  Por tanto tenemos a nuestra disposición el dato de cuánto tiempo ha esperado una fuente debido a que se ha bloqueado por un transformación posterior.

El mensaje en Katmai CTP5 es el siguiente:

During last execution the pipeline suspended output "Output 0" (96) of component "Ole Db source" (150) for 2050 milliseconds to limit the number of in-memory buffers.

Que beneficio obtenemos:

Si existen tiempos de espera en las fuenes, podemos claramente identificarlo y trabajar en la fuente, optimizar la query o utilizar otra forma de conectar.

Si no existen tiempos de espera, entonces nos podemos centrar en la optimización de las siguientes transformaciones a la fuente de datos.

 

Saludos y a optimizar paquetes!!!! 

Francisco A. González

fgonzalez@solidq.com

 

Extracción de archivos almacenados en la base de datos de contenidos de SharePoint con Integration Services

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.

 

  1. Exportamos desde Wss_content de producción a la base de datos creada Wss_Content_AUX las tablas dbo.AllDocs y dbo.AllDocStreams completas.

     

     

     

  2. 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

  3. 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.

     

  4. Creamos una variable para almecenar la parte fija de la ruta de disco donde se ubicaran los ficheros.

 

 

  1. 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.

     

     

     

     

     

  2. 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.

 

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

 

 

FIN

1 - 10 Next

 ‭(Hidden)‬ Admin Links