Si alguna vez has usado SQL Server Upgrade Advisor para analizar el estado actual de un servidor de SQL Server de cara a una migración, habrás podido notar que la herramienta en sí, aunque funciona como debe, peca en algunos aspectos…con solo tener que analizar más de 1 instancia ya te das cuenta de lo que te digo :)Bueno, pues si a alguien (como es mi caso) no le apetece tener que lidiar con los ficheros DE.xml de resultado exportados a .csv que genera la herramienta por defecto…que sepa que se puede muy facilmente hacer uno un “parser” de dicho XML para hacer con la información lo que mejor se quiera.Para esto lo único que tenemos que hacer es generarnos el .xsd de resultado (Visual Studio lo hace automático por nosotros), leer el XML a un DataSet y luego lanzar esta “sencilla” query LINQ2DataSet 🙂

   1:   var q = from ia in ds.Tables["ItemAttribute"].AsEnumerable()
   2:                join ias in ds.Tables["ItemAttributes"].AsEnumerable()
   3:                      on ia.Field<int>("ItemAttributes_id")
   4:                           equals ias.Field<int>("ItemAttributes_id")
   5:                join item in ds.Tables["Item"].AsEnumerable()
   6:                      on ias.Field<int>("Item_id")
   7:                          equals item.Field<int>("Item_id")
   8:                join r in ds.Tables["Report"].AsEnumerable()
   9:                       on item.Field<Nullable<byte>>("ItemId")
  10:                             equals r.Field<Nullable<byte>>("ItemId")
  11:                join iss in ds.Tables["Issue"].AsEnumerable()
  12:                       on r.Field<Nullable<byte>>("IssueId")
  13:                              equals iss.Field<Nullable<byte>>("IssueId")
  14:                select new
  15:                {
  16:                  ItemAttributesId = ia.Field<int>("ItemAttributes_id"),
  17:                   Name = ia.Field<string>("Name"),
  18:                   Value = ia.Field<string>("Value"),
  19:                   Issue = iss.Field<string>("IssueDescription"),
  20:                   IssueText = iss.Field<string>("IssueText"),
  21:                   IssueType = iss.Field<string>("IssueType")
  22:                  };

 

Ahora solo te queda usar el objeto “q” para añadirle o toquetearle lo que quieras…una pista?…¿Qué tal que tu parser sea capaz de darte estimaciones temporales basado en el tipo de “Issue”? 🙂

Salu2!

 

0 Shares:
Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

You May Also Like
Leer más

Versiones de datos: Modelado Dimensional

En esta entrada se expone con un ejemplo la importancia de tener un registro temporal en los cambios que pueden ir realizándose en nuestro modelo. Con esto queda ilustrado el concepto de Slow Changing Dimensions estudiado con anterioridad.
Leer más

Extended support. Pan para hoy, hambre para mañana.

Este año 2020 va a representar un reto importante para muchas organizaciones desde el punto de vista de actualizaciones/renovaciones. El soporte extendido de SQL Server 2008 terminaba el pasado 9 de Julio de 2019 y hoy 14 de Enero de 2020 termina el de Windows Server 2008 y 2008 R2. Muchas empresas son conscientes del fin de soporte y a pesar de ello, aún no tienen prevista la migración por lo que probablemente deba ser abordada en breve y con cierta urgencia (escanario ideal).