Ciclo de WebCast sobre SQL Server 2008 R2 (AKA Kilimanjaro)

Posted by Miguel Egea | Posted in Analisys Services, Noticias, Relacional | Posted on 24-02-2010

0

Creo que un ciclo de conferencias tan interesante y tan elaborado merecen un link mas largo, explicando que encontrar en cada uno de ellos etc.. lo haremos espero con tiempo. De momento, aquí teneis el link
Ciclo de WebCast sobre SQL Server 2008 R2 en castellano

Introducción a SQL Server Integration Services. Video 1

Posted by Miguel Egea | Posted in SQL Server Integration Services, Tutoriales | Posted on 16-02-2010

3

Dentro del tutorial de SQL Server Integration Services he pensado ir poniendo videos con pequeñas demos. Este video es nivel 100, es decir que no espereis nada realmente complicado ni espectacular, es un mero paseo por el entorno, dando una idea ligera sin ningún detalle de los componentes que nos vamos a encontrar, aunque sin profundizar mucho en ninguno de ellos. Poco a poco iremos complicando las demostraciones y los temas, de momento, sin embargo, estamos con las introducciones. Espero que sea lo que andais buscando.

Publicado el Training kit de SQL Server 2008 R2

Posted by Miguel Egea | Posted in Noticias | Posted on 04-02-2010

0

Más información
http://blogs.msdn.com/rdoherty/archive/2010/02/03/announcing-the-sql-server-2008-r2-update-for-developers-training-kit.aspx

Scripts curiosos, para construir otros scripts

Posted by Miguel Egea | Posted in AntiCursores, Relacional | Posted on 03-02-2010

0

En algunas ocasiones tenemos que lanzar un query repetitivo para un monton de servidores o para un monton de tablas. Yo que soy bastante vago a la hora de hacer tareas repetitivas me he ido creando atajos y truquitos, que no son otra cosa. Os voy a poner un par de ejemplos que habréis de adaptar a vuestras necesidades.

El primero de los ejemplos muestra como ejecutar un script mediante SQL CMD para un conjunto de servidores. Primero suponemos que tenemos una tabla que contiene el nombre de esos servers, también supone que el usuario sa tiene el mismo password en todos, obviamente basta con sustituir sa por otro usuario que tenga permisos.
Si estos usuarios están en una tabla también es facil de adaptar.

use tempdb
go
create schema tuesquema
go
create table tuesquema.TuTablaConNombresDeServidor (server sysname)
go
insert into tuesquema.TuTablaConNombresDeServidor  values ('127.0.0.1'),('10.10.10.10\instancia')
go
select row_number() over (partition by server order by orden),* 
	from(
		select 0 orden,
			':connect '+ server + ' -U sa -P PasswordSA ' query,
				server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select  1 orden,
			'if 0=(select count(*) from master.sys.syslogins where name=''tunuevousuario'')' query,
			server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 2, 
			'begin',server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 3,
			'  create login tunuevousuario with password=''ElPassword'';',
			server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 4,
			'  exec sp_Addsrvrolemember ''tunuevousuario'',''sysadmin'';',
			server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 5,
			' end',
			server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 6, 
				'else',
				server 
		from tuesquema.tutablaconNombresdeservidor 
		union all
		select 7,
			'  exec sp_password ''tunuevousuario'',@new=''ElPassword'';',
			server 
		from tuesquema.tutablaconNombresdeservidor
 ) a where not server is null order by 4,1

El resultado de la ejecución de este script será el que podeis ver a contiunación

Lo que habremos de hacer luego es copiar el resultado query y pegarlo en una nueva ventana de consulta, despues habremos de ir a Query->SQLCMD mode, de esta forma aparecerá la parte de connect en gris, lo que quiere indicar que esa operación se lanzará no como TSQL sino como administración, realmente lo que hará será conectarse al servidor que hemos indicado. En modo SQL CMD hay muchos más comandos, pero no son el objeto de este artículo. El resultado hecho esto es el que podeis ver en la siguiente figura.

El siguiente script servira para ejecutar un select count para cada una de las tablas en nuestro sistema.

select 'SELECT  ''['+Table_schema+'].['+table_name+']'' NombreDeTabla,count(*) FROM  ['  +
		TABLE_SCHEMA +'].[' +TABLE_NAME +'] UNION ALL ' 
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE'

El resultado de la ejecución de esta consulta será el que veis en la siguiente imagen.

Despues basta con copiar esta query a una nueva ventana, quitar el último union all y añadir una cláusula para la ordenación, en mi caso pondría order by 2 desc, de forma que se ordenaría de tabla con mayor numero de filas a menos. El resultado en AdventureWorks2008 será el que veis en la última imagen del artículo

Por útimo decir que este comando haría algo parecido (que no igual), es un comando indocumentado llamado sp_foreachtable que tiene su gracia

exec SP_MSFOREACHTABLE 'SELECT ''?'', COUNT(*) FROM ?'

Disfrutad del código

Maria Garaña, habla sobre tecnología y empleo en España

Posted by Miguel Egea | Posted in Noticias | Posted on 02-02-2010

0

La presidenta de Microsoft Ibérica, María Garaña, reflexiona sobre si el sector de las nuevas tecnologías podría convertirse en la principal fuente de riqueza y empleo de España. Su conclusión: para que tal cosa suceda no hay que abandonar las industrias tradicionales, sino que hay que llevar hasta ellas la tecnología y la innovación.

http://www.rtve.es/mediateca/audios/20100202/maria-garana-innovacion-tecnologica-espana-dias-como-hoy/682978.shtml

Tutorial de SQL Server Integration Services. Introducción.

Posted by Miguel Egea | Posted in SQL Server Integration Services | Posted on 02-02-2010

2

Introducción

SQL Server Integration services es un producto que viene incluido con la licencia de Microsoft SQL Server y que es la propuesta de Microsoft para lo que se llama Extracción, Transformación y Carga de datos, y yo me atrevería a decir que también para la limpieza de los mismos. Muchas veces creemos que el lenguaje obvio para hacer todas estas tareas es T-SQL, sin embargo, la experiencia me dice que cuando de lo que se trata es de consolidar información y de moverla muy rápido, nada como SSIS para resolver esa cuestión.

SQL Server Integration services es un producto en el que se desarrolla de forma muy visual, básicamente pinchando y arrastrando componentes desde la barra de herramientas hasta los lugares de diseño, cada uno de esos componentes admitirá parametrización para adaptarlo a nuestras necesidades. 

Un vistazo rápido

Para comenzar con SSIS, hemos de instalar las herramientas de Cliente de SQL Server, en ellas nos aparecera el BIDS (Bussiness Intelligence Developmen Studio),  dentro de los proyectos de Bussiness Intelligence tenemos los proyectos de Integration Services, como puede observarse en esta figura

Una vez que seleccionamos el proyecto de Integration services se nos abre un paquete en blanco. Los paquetes están separados en dos partes fundamentales, los flujos de control y los flujos de datos.

En el flujo de control especificaremos las tareas que se han de ir haciendo y las dependencias y restricciones. En esa superficie podemos colocar las tareas de flujo de datos, y dentro configurarlas para que muevan los datos de un sitio a otro.

Algunas de las tareas que podremos hacer con SQL Server Integration services de forma sencdilla serán:

  • Recorrer listas de ficheros para incorporarlos a nuestras bases de datos
  • Procesar cubos, dimensiones o ejecutar comandos XMLA
  • Insertar datos de forma masiva
  • Extraer, limpiar, transformar y cargar datos en datamarts o datawarehouses
  • Usar tareas para entender mejor como es la distribución de nuestros datos
  • Ejecutar comandos T-SQL
  • Mover, copiar o eliminar archivos
  • Obtener o poner datos en un servidor FTP
  • Leer o escribir datos en colas de Microsoft Message Queue
  • Enviar correos electrónicos con los resultados de las operaciones
  • Transferir objetos SQL
    • Logins
    • Jobs
    • Procedimientos de master
    • Objetos de servidor
  • Invocar a servicios Web XML
  • Leer datos WMI o suscribirse a eventos WMI
  • Tareas de mantenimiento de bases de datos
    • Backups
    • Chequeos de integridad
    • Tareas del agente SQL
    • Tareas TSQL
    • Limpieza de hisotircos
    • Tareas de limpieza de datos
    • Notificaciones a operadores
    • Reorganización y reconstrucción de índices
    • Purgado de bases de datos
    • Actualización de Estadisticas

Todas estas operaciones pueden realizarse en un servidor distinto de nuestros motores de bases de datos, usando al máximo los recursos de la máquina y por lo tanto con una gran capacidad de escalado y un altísimo rendimiento.

Dentro de las tareas que podremos hacer con datos en sí también podemos usar alguna de las siguientes:

  • Origenes de datos
    • Leer datos con proveedores  de datos .NET
    • Leer datos de archivos Excel
    • Leer datos de ficheros planos, estén formados practicamente como estén formados
    • Leer datos de cualquier fuente que ofrezca un proveedor OLEDB, (todos los fabricantes del mercado lo hacen)
    • Leer datos en formato “crudo” raw
    • Leer datos en formatos XML
  • Transformaciones de datos
    • Agregar información
    • Guardar y usar datos en caché para evitar leer la misma información más de una vez
    • Añadir información de traza a los datos (nombre del paquete, id de ejecución , versión, hora de comienzo…
    • Realizar transformaciones sencillas de textos (pasar a mayúsculas o minúsculas, cambiar a lenguajes chinos, disminuir tampaños,…)
    • Mandar datos a un lugar o a otro en función de valores
    • Copiar columnas
    • Convertir tipos de datos
    • Completar la información con consultas a modelos de minería de datos
    • Obtener columnas con cálculos complejos
    • Guardar o leer archivos BLOB convirtiendolos en ficheros y vicebersa
    • Usar ténicas de lógica difusa tanto para agrupados como para búsquedas
    • Combinar datos
    • Realizar Joins complejos
    • Crear copias en memoria de los datos para añadir comportamientos
    • Ejecutar comandos SQL contra conexiones oldb
    • Obtener muestreos de datos por porcenaje,
    • Conteos diversos
    • Trasposición de matrices (Pivot)
    • Ordenar
    • Extracción y busqueda de terminos
    • Asistentes para dimensiones lentamente cambiantes
  • Destino de datos
    • Escribir datos con proveedores de datos .NET
    • Escribir datos a archivos Excel
    • Escribir datos a ficheros planos
    • Entrenar modelos de mineria de datos
    • Escribir datos datos en cualquier destino que ofrezca un proveedor OLEDB, (todos los fabricantes del mercado lo hacen)
    • Escribir datos en formato crudo
    • Devolver Recorsets, y Datareaders
    • Mandar datos a SQL Server Compact

Todas estas funcionalidades se ven acompañadas además por un a gran versatilidad en la configuración, en la trazabilidad de las ejecuciones , en la firma digital de paquetes y en el uso y paso de variables para poder parametrizar adecuadamente el producto.

En resumen estamos ante un producto que ofrece un sin fín de posibilidades que iremos desgranando en los siguientes capítulos de este tutorial que nos llevará buena parte del año escribir por completo.

SQL Server Integration Services, Webcast en castellano.

Posted by Miguel Egea | Posted in Noticias | Posted on 01-02-2010

0

Mi compañero y amigo Salvador Ramos, webmaster de www.sqlserversi.com y SQL Server MVP imparte mañana 2 de Febrero de 2010 un webcast sobre SQL Server Integration services, Salva es un excelente ponente y estoy seguro que es una sesión para disfrutar.

http://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032439774&EventCategory=4&culture=es-ES&CountryCode=ES

Saludos

Creando una dimensión tiempo en Analisys Services 2/2

Posted by Miguel Egea | Posted in Analisys Services | Posted on 23-01-2010

2

En el artículo anterior de la serie vimos omo  crear la primera parte de la dimensión tiempo. En este momento tenemos ya constrido nuestro DataSource View y vamos a ver como se construye nuestra dimensión tiempo desde el punto de vista de Analisys Services. Para ello empezamos con nuestro BIDS (Bussiness Intelligence Development Studio) abierto con el proyecto tal y como lo teníamos al final del artículo anterior.

Cabe destacar que estamos haciendo este proyecto con SQL Server 2008, cambia algo con respecto de 2005, así que no es de extrañar que los menús no sean exactamente los mismos, aunque si que lo es el concepto y la forma de hacerlo.

Para comenzar pulsaremos sobre el apartado dimensiones con el botón derecho, eligiendo la opción Nueva dimensión, en ese instante nos aparecerá el asistente para la creación de dimensiones, y tras saltarnos si procede la página de bienvenida, elegiremos la opción “Use an existing table”, Usar una tabla existente. (Aunque hay opciones para crear una tabla de tiempo en el origen de datos o en el servidor, y que estas opciones puedan resultar muy atractivas a simple vista, nosotros vamos a usar la forma máal de  crear todo lo relacionado con la dimensión tiempo, porque nuestro objetivo es entenderlo. Además, al menos yo, siempre uso el mecanísmo que estoy describiendo, porque no me aporta un trabajo extra y si me da un control muy importante sobre como funciona la dimensión tiempo.

Â

En el siguiente paso del asistente tenemos que seleccionar en que objeto del Data Source View nos basamos para crear la dimensión, adicionalmente hay que decir cual es la clave primaria de ese objeto (en nuestro caso es fácil, puesto que la infiere del model) y que columna contiene el descriptor de esa clave (name column). Elegiremos el campo Fecha como name column mientras mantenemos FechaKey como la clave primaria de esta dimensión.

En el siguiente paso del asistente es cuando realmente tenemos que definir que estamos hablando de una dimensión de tipo tiempo. Esto cambia con respecto a 2005, en el que había un wizard que nos preguntaba directamente cual era el campo que contenía el dato para mes, semana, dia, trimestre, etc.. En el asistente aparece un campo para definir el tipo de atributo, y es ahí donde concretamos cual es la naturaleza de cada uno de los campos,  por ejemplo, en la siguiente figura podemos ver como hemos especificado para Fecha Key que se trata de un atributo de tipo date, es decir, es la fecha propiamente dicha. También aprovecharemos este paso para ajustar los nombres que no acaben de gustarnos, (por ejemplo quitaré Fecha Key y lo traduciré por fecha.

Una vez que hemos elegido todos los atributos podemos continuar con el asistente, en la imagen que teneis a continuación podeis ver como he hecho los siguiente cambios:

  • He renombrado Fecha Key por fecha y Mes Key por mes
  • He especificado que el tipo de atributo es Date para la fecha
  • Year para el año
  • Month para el mes
  • Week para la semana
  • Day Of year para el dia del año
  • Day of Month para el dia del mes
  • Day of Week para el dia de la semana

Despues de esto simplemente se termina el asistente en el que nos dice que va  crear la dimensión tiempo como puede verse a continuación.

Esta dimensión tiempo, ya funcionaría, pero no es aún ni demasiado navegable (no tiene jerarquías) ni mucho menos optima, porque las relaciones entre atributos tampoco están especificadas. Esto si es un cambio importante en SQL Server 2008, la relación entre atributos cuenta ahora con una pestaña específica, que lo hace más visual. El estado inicial de estas relaciones entre atributos es el que puede verse en la figura a continuación.

Sin embargo, debemos especificar las relaciones reales de dependencia, ya que esas relaciones ayudarán mucho al rendimiento, debido a que con estas relaciones establecidas, SQL Server Analisys Services puede inferir, que el resultado de un mes, es el resultado de sumar los dias (para operaciones aditivas). mientras que el resultado del año es el resultado de sumar los meses. Si estas relaciones no son especificadas, esas conclusiones no pueden establecerse y por tanto se hace un uso suboptimo de los datos. En el grafico siguiente puede verse como establecemos estas relaciones de dependencia de forma adecuada.

Una parte importante, en la que muchas veces no nos fijamos es en el color de las flechitas del apartado Attibute Relasionships, el color más gris indica que la relación que existe entre esos atributos es una relación flexible, es decir que puede cambiar con el tiempo, por ejemplo en el caso del jefe del que depende una persona, es claro que puede cambiar con el tiempo, aunque sea una relación clara entre los atributos, sin embargo, en nuestro caso,  la relación Fecha->Mes y la Relación Mes-Año, están especificada como relaciones rígidas que quiere decir que el mes 2009-01 siempre será del año 2009 y eso no va a cambiar (cosa que es bastante obvia).

Una vez que tenemos establecidas las relaciones solo nos falta añadirle a la dimensión las jerarquias que nos sirvan para especificar el criterio por el que queremos que se navegue nuestra dimensión. Para ello simplemente arrastraré los atributos hasta el apartado de jerarquías. Adicionalmente voy a ocultar el atributo año, para no confundir a los usuarios, si lo dejo podrán llegar al año desde la jerarquia y desde el atributo, y en mi experiencia eso lia bastante a los usuarios. En la imagen siguiente podeis ver como quedan mis jerarquías.

Podeis observar que no tengo ningún warning ni ninguna flechita azul, esto es simplemente porque he seguido todos los patrones de buen diseño que SQL Server 2008 Analisys Services tiene especificados para una dimensión como esta. Ahora simplemente vamos a ver un ejemplo de como navegarla, lo teneis en el siguiente gráfico.

Por último, aunque esta serie de dos artículos acaba, en posteriores post, intentaré hablar de como localizar esta dimensión, especificando que para usuarios en inglés el nombre le aparezca en inglés, mientras que para usuarios en castellano los nombres aparezcan en castellano, esto es January para los Ingleses, Enero para los hispanos.
Esto será en otro post.
Saludos Cordiales

Mis compañeros de relacional migran una BBDD 24×7 con 4 segundos de tiempo de caida!

Posted by Miguel Egea | Posted in Noticias | Posted on 20-01-2010

0

El equipo de mi amigo eladio, unos cracks. mas informacion

SQL Server 2008, tips an tricks. Miguel Egea Charla en video en el CodeCamp 2009

Posted by Miguel Egea | Posted in Relacional | Posted on 18-01-2010

3

SQL Server 2008 incorpora nuevas funcionalidades para dar soporte a las tecnologías que demanda la sociedad; en esta linea, veremos cómo SQL Server hace la vida más fácil gestionando localizaciones geográficas y puntos en el espacio; además veremos cómo SQL Server nos ayuda a gestionar más eficientemente videos, documentos, y archivos de gran tamaño.