otrdiena, 2013. gada 15. oktobris

Izpildes laika izvadīšana

Ja SQL Server Profiler darbināt slinkums, te viens īsais veids kā to vēl var izdarīt:
Declare @StartTime datetime = getdate();
select 1 -- mans vaicājums/procedūra vai vienalga kas..
Print ' Duration = ' + CONVERT(VARCHAR(30), getDate() - @StartTime, 114) + ' (hh:mi:ss:mmm)';
Piebildes
  • DateTime dēļ procedūras rezultātu precizitāte līdz 3 ms (Jauno SQL Server versiju Profiler strādā ar mikrosekundēm, lai arī GUI rāda milisekundes)
  • Uz SQL Server 2005 vai vecākām versijām piemērs ir jāpiekoriģē (sanāks vairāk rindu)
Kāpēc šis variants?
  • Slinkums vērt vaļā profiler
  • Statistics Time ir detalizētāks, taču, piemēram, procedūrā ar kursoru sanāk katras komandas laiks atsevišķi. Un man šeit tas tikai traucēja.
Ko darīt, ja ir daudzas komandas (piemēram, procedūras iekšienē) un vajag/gribas redzēt izpildes laikus procedūras izpildes laikā?

Print vietā izmantot Raiserror (Ziņojumu izvadīšana izmantojot RAISERROR), no sākuma gan ziņojums būs jāpiešķir kādam mainīgajam:
RAISERROR ('Tiks izvadīts momentāli un šī nav kļūda!', 0, 1) WITH NOWAIT; 

1 komentārs:

  1. No SQL 2008 var arī:
    Declare @StartTime datetime2 = sysdatetime();

    AtbildētDzēst