Jag har gjort ett enkelt script för att testa procedurer. Kom gärna med feedback på förbättringar.
Kom-igång-guide
1. Skapa en databas som heter PerformanceTest. Kör scriptet i tabeller.txt
2. Öppna Query Analyzern och välj den databas du vill köra testerna på. Klipp och klistra in det andra scriptet.
3. Sätt in korrekta värden på dessa rader:
Set @StoreprocedureName = 'proc_XXXXXXXXX'
Samt korrekta inparametrar:
Set @StoreprocedureParameters = '230, ''2005-01-01'', ''2005-02-15'''
Det är lite speciellt med inparametrarna men ni listar nog ut hur det funkar. I annat fall får ni fråga.
4. Sen är det bara att köra :)
Som sagt är det någon som har några förslag på förbättringar av scriptet så får ni gärna säga till...
En bra idé, men att exekvera stored procedures med exec och parametrarna i kommandotexten är inte särskilt bra. Det ska undvikas i driftsituationer och därför är det inte särskilt rättvist att köra tester med det. Använd åtminstone sp_executesql i stället för exec.
Om jag anropar en procedur via Query Analyzern så är väl nedanstående tre alternativ identiska?
proc_XXXXXXX 'invärde'
exec proc_XXXXXXX 'invärde'
Set @StoreprocedureName = 'proc_XXXXXXXXXX'
Set @StoreprocedureParameters = ''invärde''
Set @Storeprocedure = @StoreprocedureName + ' ' + @StoreprocedureParameters
Exec (@Storeprocedure)
Sen har jag en fråga till. Om jag förstått sp_executesql rätt så kan man inte anropa en sp via den utan man kan enbart skicka med direkt sql-satser (typ Select User_Code from tbl_User) och det blir väl inte så bra om man använder sig av enbart procedurer?
Om jag förstått sp_executesql rätt så kan man inte anropa en sp via den utan man kan enbart skicka med direkt sql-satser (typ Select User_Code from tbl_User) och det blir väl inte så bra om man använder sig av enbart procedurer?
Det går att använda sp_executesql med procedures också. Jag skriver
sp_executesql N'EXEC myProcedure'
Det går säkert att skriva på andra sätt också. Jag har precis lärt mig detta.
Skillnaden är att du kan parametrisa anrop med sp_execute_sql och få tillbaka värden i parametrar vilket inte går med EXEC. Det är också så att exekveringsplanen för frågor som utförs med sp_execute_sql sparas och kan därför återanvändas.
Att använda
sp_executesql N'EXEC myProcedure'
-- eller lukaspojkens 3:e alternativ ovan
istället för
myProcedure
leder bara till onödig processering.
260 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e