Performance dashboard reports


Durante el 28/11/2015 en la ciudad de México en el campus San Rafael tuve la oportunidad de tener mi primera platica como speaker en un SQL Saturday, en la cual hable sobre desempeño y la herramienta gratuita de Microsoft Performance Dashboard Reports.

No puedo decir que fue el evento que desearía, ya que tuve varios problemas como lo fue el no tener acceso a Azure donde ya tenia un laboratorio y el otro fue que el puerto HDMI de mi laptop esta dañado y no pude presentar, lo cual hizo que unos pocos asistentes se retiraran. Y me vi forzado a presentar en la diminuta pantalla de mi laptop. Ante todo esto me calmo y pude hablar de performance y varios consejos, lamentablemente de lo que no pu de hacer fue enseñar la herramienta como yo hubiera deseado, subi y les dire que es necesario para poder reproducir el laboratorio usado.

  • SQL Server 2014: 
    • https://www.microsoft.com/en-us/download/details.aspx?id=42299
  • AdventureWorks 2014: 
    • http://msftdbprodsamples.codeplex.com/
  • Scripts de Jonahathan para data work load: 
    • https://www.sqlskills.com/blogs/jonathan/the-adventureworks2008r2-books-online-random-workload-generator/
  • Archivos zip: 
    • https://drive.google.com/open?id=0B2gfWYH7EFGccUN0MkJ6Qi1sTW8
  • Presentación:
    • https://drive.google.com/open?id=0B2gfWYH7EFGcTEV2WVVySE5lV2c
Agrege algunos scripts más y modifique algunos que ya no son validos, el scipt es:

# Load the SMO assembly
[void][reflection.assembly]::LoadWithPartialName("Microsoft.SqlServer.Smo");

# Set the server to run the workload against
$ServerName = "localhost\sql2014";

# Split the input on the delimeter
$Queries = Get-Content -Delimiter "------" -Path "AdventureWorks BOL Workload.sql"

WHILE(1 -eq 1)
{
    # Pick a Random Query from the input object
    $Query = Get-Random -InputObject $Queries;

    #Get a server object which corresponds to the default instance
    $srv = New-Object -TypeName Microsoft.SqlServer.Management.SMO.Server $ServerName

    # Use the AdventureWorks2008R2 database
    $srv.ConnectionContext.set_DatabaseName("AdventureWorks2014")

    # Execute the query with ExecuteNonQuery
    $srv.ConnectionContext.ExecuteNonQuery($Query);

    # Disconnect from the server
    $srv.ConnectionContext.Disconnect();
   
    # Sleep for 100 miliseconds between loops
    Start-Sleep -Milliseconds 100
}
 
Tendrá que cambiar el server al server que quieren que vaya la carga generada de manera aleatoria, también ambos archivos deben de estar en el mismo path.

Como por ejemplo supongamos que estan en C:\SQLSaturday|

Ejecutan en PS: &".\run.ps1" 

Esto empezara a hacer una carga de la información, si ven que la carga no es suficiente puede bajar el tiempo de wait de 100ms a 10ms y ejecutar el mismo script varias veces de varias ventanas de PS para tener una carga mayor.

Sin más por el momento espero sus comentarios, dudas o preguntas al respecto, a aquellos que estuvieron en la platica lamento mucho la situación y tomare medidas para que esto no vuelva a pasar.

Comentarios