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

Calculate Groups en SSAS Tabular 2019

Hace unos meses se lanzó al público SQL Server 2019 Analysis Services CTP 2.3. Esta nueva versión trae una nueva funcionalidad para los modelos tabulares, los calculate groups. Los calculate groups vienen a hacernos la vida un poco más fácil a la hora de desarrollar modelos tabulares, dando la opción de reutilizar métricas, como pueden ser por ejemplo, las relacionadas con el tiempo.