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

Super SSIS, tu nuevo superhéroe

¿Tus procesos ETL con SSIS rinder a niveles humanos? ¿Necesitas más velocidad, gestionar más datos, mejor performance? ¿No tienes tiempo de esperar al último hijo de Krypton para que ejecute tus DataFlow? En esta sesión veremos técnicas de optimización en entornos modernos (¡estamos en 2017!) para que lleves tus paquetes SSIS al siguiente nivel... ¡el nivel de los superhéroes!
Leer más

Aplicando seguridad a métricas SSAS

Aplicando seguridad a métricas SSAS. Para controlar la seguridad de los objetos, operaciones y datos de Analysis Services se utilizan roles (grupos de usuarios). Los usuarios se pueden añadir o quitar de los roles y para esos roles se determinan unos permisos.