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.
Si se elige esta opción habrá que:
Una vez identificada la información anterior se puede proceder a la creación del grupo.
Cuadro 5 - Ventana de parámetros del servicio genérico
Cuadro 6 - Clave del registro
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
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.
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:
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:
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 !!!
SaludosSalvador Ramossramos@solidq.com
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
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
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.
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
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
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.
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
FIN