Skip to content

Instantly share code, notes, and snippets.

@DanielLarsenNZ
Last active June 1, 2023 04:50
Show Gist options
  • Save DanielLarsenNZ/84f53bddd2e6bc68e250 to your computer and use it in GitHub Desktop.
Save DanielLarsenNZ/84f53bddd2e6bc68e250 to your computer and use it in GitHub Desktop.
Visual Studio Load Test results repository creation script for LocalDB
-- Creates the Visual Studio Load Test Results Repository in LocalDB, so that you don't have to install SQL Server.
-- Adapted from C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\loadtestresultsrepository.sql
-- See also: https://msdn.microsoft.com/en-us/library/ms182600(v=vs.120).aspx
-- Usage example: from the Visual Studio Developer Command Prompt (note SQLCMD switches are case sensitive):
-- SQLCMD /S (LocalDB)\v11.0 /i loadtestresultsrepository-localdb.sql
IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases WHERE name = N'LoadTest2010')
BEGIN
CREATE DATABASE [LoadTest2010] COLLATE SQL_Latin1_General_CP1_CI_AS
END
GO
use [LoadTest2010]
GO
IF NOT EXISTS (select * from dbo.sysobjects where id = object_id(N'[LoadTestRun]') and OBJECTPROPERTY(id, N'IsUserTable') = 1)
BEGIN
CREATE TABLE [LoadTestRun] (
[LoadTestRunId] [int] IDENTITY (1, 1) NOT NULL ,
[LoadTestName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[RunId] [char] (36) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Description] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[StartTime] [datetime] NULL ,
[EndTime] [datetime] NULL ,
[RunDuration] [int] NOT NULL ,
[WarmupTime] [int] NOT NULL ,
[RunSettingUsed] [nvarchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[IsLocalRun] [bit] NOT NULL ,
[ControllerName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Outcome] [nvarchar] (32) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[LoadTest] [image] NULL ,
[Comment] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[LoadTestSchemaRev] [int] NULL,
[CooldownTime] [int] NULL
) --ON [PRIMARY] TEXTIMAGE_--ON [PRIMARY]
CREATE TABLE [LoadTestSchemaRevision] (
[LoadTestSchemaRev] [int] NOT NULL
) --ON [PRIMARY]
INSERT INTO [LoadTestSchemaRevision] ([LoadTestSchemaRev]) VALUES (3)
CREATE TABLE [LoadTestCase] (
[LoadTestRunId] [int] NOT NULL ,
[ScenarioId] [int] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[TestCaseName] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TestElement] [image] NULL ,
[TestType] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestMessage] (
[LoadTestRunId] [int] NOT NULL ,
[AgentId] [int] NOT NULL ,
[MessageId] [int] NOT NULL ,
[MessageType] [tinyint] NOT NULL ,
[MessageText] [nvarchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[SubType] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[StackTrace] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[MessageTimeStamp] [datetime] NOT NULL ,
[TestCaseId] [int] NULL ,
[RequestId] [int] NULL ,
[TestLogId] [int] NULL
) --ON [PRIMARY] TEXTIMAGE_--ON [PRIMARY]
CREATE TABLE [LoadTestThresholdMessage] (
[LoadTestRunId] [int] NOT NULL ,
[TestRunIntervalId] [int] NOT NULL,
[CounterInstanceId] [int] NOT NULL,
[MessageId] [int] NOT NULL ,
[MessageText] [nvarchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestMessageType] (
[LoadTestRunId] [int] NOT NULL ,
[MessageTypeId] [int] NOT NULL,
[MessageType] [tinyint] NOT NULL ,
[SubType] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestPerformanceCounter] (
[LoadTestRunId] [int] NOT NULL ,
[CounterCategoryId] [int] NOT NULL ,
[CounterId] [int] NOT NULL ,
[CounterName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[HigherIsBetter] [bit] NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestPerformanceCounterCategory] (
[LoadTestRunId] [int] NOT NULL ,
[CounterCategoryId] [int] NOT NULL ,
[CategoryName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[MachineName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[StartTimeStamp100nSec] [bigint] NOT NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestPerformanceCounterInstance] (
[LoadTestRunId] [int] NOT NULL ,
[CounterId] [int] NOT NULL ,
[InstanceId] [int] NOT NULL ,
[LoadTestItemId] [int] NULL ,
[InstanceName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[CumulativeValue] [real] NULL ,
[OverallThresholdRuleResult] [tinyint] NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestPerformanceCounterSample] (
[LoadTestRunId] [int] NOT NULL ,
[TestRunIntervalId] [int] NOT NULL ,
[InstanceId] [int] NOT NULL ,
[ComputedValue] [real] NULL ,
[RawValue] [bigint] NOT NULL ,
[BaseValue] [bigint] NOT NULL ,
[CounterFrequency] [bigint] NOT NULL ,
[SystemFrequency] [bigint] NOT NULL ,
[SampleTimeStamp] [bigint] NOT NULL ,
[SampleTimeStamp100nSec] [bigint] NOT NULL ,
[CounterType] [int] NOT NULL ,
[ThresholdRuleResult] [tinyint] NOT NULL ,
[ThresholdRuleMessageId] [int] NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestRunAgent] (
[LoadTestRunId] [int] NOT NULL ,
[AgentId] [int] NOT NULL ,
[AgentName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestRunInterval] (
[LoadTestRunId] [int] NOT NULL ,
[TestRunIntervalId] [int] NOT NULL ,
[IntervalStartTime] [datetime] NOT NULL ,
[IntervalEndTime] [datetime] NOT NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestScenario] (
[LoadTestRunId] [int] NOT NULL ,
[ScenarioId] [int] NOT NULL ,
[ScenarioName] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) --ON [PRIMARY]
CREATE TABLE [WebLoadTestErrorDetail] (
[LoadTestRunId] [int] NOT NULL ,
[AgentId] [int] NOT NULL ,
[MessageId] [int] NOT NULL ,
[WebTestRequestResult] [image] NULL
) --ON [PRIMARY] TEXTIMAGE_--ON [PRIMARY]
CREATE TABLE [WebLoadTestRequestMap] (
[LoadTestRunId] [int] NOT NULL ,
[RequestId] [int] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[RequestUri] [nvarchar] (2048) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
[ResponseTimeGoal] [float] NULL
) --ON [PRIMARY]
CREATE TABLE [WebLoadTestTransaction] (
[LoadTestRunId] [int] NOT NULL ,
[TransactionId] [int] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[TransactionName] [nvarchar] (64) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Goal] [float] NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestSqlTrace] (
[LoadTestRunId] [int] NOT NULL ,
[TextData] [ntext] COLLATE SQL_Latin1_General_CP1_CI_AS NULL ,
[Duration] [bigint] NULL ,
[StartTime] [datetime] NULL ,
[EndTime] [datetime] NULL ,
[Reads] [bigint] NULL ,
[Writes] [bigint] NULL ,
[CPU] [int] NULL ,
[EventClass] [int] NOT NULL
) --ON [PRIMARY] TEXTIMAGE_--ON [PRIMARY]
-- Tables added for storing inner test results
CREATE TABLE [LoadTestTestLog] (
[LoadTestRunId] [int] NOT NULL ,
[AgentId] [int] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[TestLogId] [int] NOT NULL ,
[TestLog] [image] NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestTestLog] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestLogId],
[AgentId]
) --ON [PRIMARY]
-- Tables added for log sources from data collectors
CREATE TABLE [LoadTestDataCollectorLog] (
[LoadTestRunId] [int] NOT NULL ,
[DataCollectorLogId] [int] NOT NULL ,
[DataCollectorDisplayName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[MachineName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[TimestampColumnName] [nvarchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[DurationColumnName] [nvarchar] (128) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[CreateTableFormatString] [nvarchar] (max) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestDataCollectorLog] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[DataCollectorLogId]
) --ON [PRIMARY]
-- Tables added for timing details
CREATE TABLE [LoadTestBrowsers] (
[LoadTestRunId] [int] NOT NULL ,
[BrowserId] [int] NOT NULL ,
[BrowserName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestBrowsers] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[BrowserId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestNetworks] (
[LoadTestRunId] [int] NOT NULL ,
[NetworkId] [int] NOT NULL ,
[NetworkName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
) --ON [PRIMARY]
ALTER TABLE [LoadTestNetworks] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[NetworkId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestSystemUnderTest] (
[LoadTestRunId] [int] NOT NULL ,
[SystemUnderTestId] [int] NOT NULL ,
[MachineName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestSystemUnderTest] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[SystemUnderTestId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestSystemUnderTestTag] (
[LoadTestRunId] [int] NOT NULL ,
[SystemUnderTestId] [int] NOT NULL ,
[MachineTag] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) --ON [PRIMARY]
CREATE TABLE [LoadTestTestDetail] (
[LoadTestRunId] [int] NOT NULL ,
[TestDetailId] [int] NOT NULL ,
[TimeStamp] [datetime] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[ElapsedTime] [float] NOT NULL,
[AgentId] [int] NOT NULL,
[BrowserId] [int],
[NetworkId] [int],
[Outcome] [tinyint],
[TestLogId] [int] NULL,
[UserId] [int] NULL,
[EndTime] [datetime] NULL,
[InMeasurementInterval] [bit] NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestTestDetail] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestDetailId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestPageDetail] (
[LoadTestRunId] [int] NOT NULL ,
[PageDetailId] [int] NOT NULL ,
[TestDetailId] [int] NOT NULL ,
[TimeStamp] [datetime] NOT NULL ,
[PageId] [int] NOT NULL ,
[ResponseTime] [float] NOT NULL,
[ResponseTimeGoal] [float] NOT NULL,
[GoalExceeded] [bit] NOT NULL,
[EndTime] [datetime] NULL,
[Outcome] [tinyint] NULL,
[InMeasurementInterval] [bit] NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestPageDetail] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[PageDetailId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestTransactionDetail] (
[LoadTestRunId] [int] NOT NULL ,
[TransactionDetailId] [int] NOT NULL ,
[TestDetailId] [int] NOT NULL ,
[TimeStamp] [datetime] NOT NULL ,
[TransactionId] [int] NOT NULL ,
[ElapsedTime] [float] NOT NULL,
[EndTime] [datetime] NULL,
[InMeasurementInterval] [bit] NULL,
[ResponseTime] [float] NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestTransactionDetail] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TransactionDetailId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestDetailMessage] (
[LoadTestRunId] [int] NOT NULL ,
[LoadTestDetailMessageId] [int] NOT NULL ,
[TestDetailId] [int] NOT NULL ,
[PageDetailId] [int] NULL ,
[MessageTypeId] [int] NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestDetailMessage] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[LoadTestDetailMessageId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestDetailMessage] TO PUBLIC
CREATE TABLE [LoadTestTestSummaryData] (
[LoadTestRunId] [int] NOT NULL ,
[TestCaseId] [int] NOT NULL ,
[TestsRun] [int] NOT NULL ,
[Average] [float] NOT NULL ,
[Minimum] [float] NOT NULL ,
[Maximum] [float] NOT NULL ,
[Percentile90] [float] NULL ,
[Percentile95] [float] NULL,
[Percentile99] [float] NULL,
[Median] float NULL,
[StandardDeviation] float NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestTestSummaryData] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestCaseId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestTestSummaryData] TO PUBLIC
CREATE TABLE [LoadTestTransactionSummaryData] (
[LoadTestRunId] [int] NOT NULL ,
[TransactionId] [int] NOT NULL ,
[TransactionCount] [int] NOT NULL ,
[Average] [float] NOT NULL ,
[Minimum] [float] NOT NULL ,
[Maximum] [float] NOT NULL ,
[Percentile90] [float] NULL ,
[Percentile95] [float] NULL,
[Percentile99] [float] NULL,
[Median] float NULL,
[StandardDeviation] float NULL,
[AvgTransactionTime] float NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestTransactionSummaryData] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TransactionId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestTransactionSummaryData] TO PUBLIC
CREATE TABLE [LoadTestPageSummaryData] (
[LoadTestRunId] [int] NOT NULL ,
[PageId] [int] NOT NULL ,
[PageCount] [int] NOT NULL ,
[Average] [float] NOT NULL ,
[Minimum] [float] NOT NULL ,
[Maximum] [float] NOT NULL ,
[Percentile90] [float] NULL ,
[Percentile95] [float] NULL,
[Percentile99] [float] NULL,
[Median] float NULL,
[StandardDeviation] float NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestPageSummaryData] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[PageId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestPageSummaryData] TO PUBLIC
CREATE TABLE [LoadTestPageSummaryByNetwork] (
[LoadTestRunId] [int] NOT NULL,
[PageId] [int] NOT NULL,
[NetworkId] [int] NOT NULL,
[PageCount] [int] NOT NULL,
[Average] [float] NOT NULL,
[Minimum] [float] NOT NULL,
[Maximum] [float] NOT NULL,
[Percentile90] [float] NULL,
[Percentile95] [float] NULL,
[Percentile99] [float] NULL,
[Goal] [float] NULL,
[PagesMeetingGoal] [int] NULL,
[Median] float NULL,
[StandardDeviation] float NULL
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestPageSummaryByNetwork] TO PUBLIC
ALTER TABLE [LoadTestPageSummaryByNetwork] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[PageId],
[NetworkId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestFileAttachment] (
[LoadTestRunId] [int] NOT NULL ,
[FileAttachmentId] [int] NOT NULL ,
[MachineName] [nvarchar] (255) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[Filename] [nvarchar] (260) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL ,
[FileSize] [bigint] NOT NULL
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestFileAttachment] TO PUBLIC
ALTER TABLE [LoadTestFileAttachment] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[FileAttachmentId]
) --ON [PRIMARY]
CREATE TABLE [LoadTestFileAttachmentChunk] (
[LoadTestRunId] [int] NOT NULL ,
[FileAttachmentId] [int] NOT NULL ,
[StartOffset] [bigint] NOT NULL ,
[EndOffset] [bigint] NOT NULL ,
[ChunkLength] [bigint] NOT NULL ,
[ChunkBytes] [image] NOT NULL
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestFileAttachmentChunk] TO PUBLIC
ALTER TABLE [LoadTestFileAttachmentChunk] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[FileAttachmentId],
[StartOffset]
) --ON [PRIMARY]
ALTER TABLE [LoadTestRun] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestCase] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestCaseId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestMessage] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[AgentId],
[MessageId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestThresholdMessage] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[MessageId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestMessageType] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[MessageTypeId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestPerformanceCounter] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[CounterId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestPerformanceCounterCategory] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[CounterCategoryId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestPerformanceCounterInstance] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[InstanceId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestPerformanceCounterSample] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestRunIntervalId],
[InstanceId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestRunAgent] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[AgentId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestRunInterval] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TestRunIntervalId]
) --ON [PRIMARY]
ALTER TABLE [LoadTestScenario] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[ScenarioId]
) --ON [PRIMARY]
ALTER TABLE [WebLoadTestErrorDetail] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[AgentId],
[MessageId]
) --ON [PRIMARY]
ALTER TABLE [WebLoadTestRequestMap] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[RequestId]
) --ON [PRIMARY]
ALTER TABLE [WebLoadTestTransaction] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[LoadTestRunId],
[TransactionId]
) --ON [PRIMARY]
CREATE INDEX [LoadTestCounterNameIndex] ON [LoadTestPerformanceCounter]([CounterName]) --ON [PRIMARY]
CREATE INDEX [LoadTestCategoryNameIndex] ON [LoadTestPerformanceCounterCategory]([CategoryName]) --ON [PRIMARY]
CREATE INDEX [LoadTestInstanceNameIndex] ON [LoadTestPerformanceCounterInstance]([InstanceName]) --ON [PRIMARY]
CREATE INDEX [LoadTestSampleInstanceIndex] ON [LoadTestPerformanceCounterSample]([LoadTestRunId], [InstanceId]) --ON [PRIMARY]
CREATE INDEX [LoadTestSqlTraceIndex] ON [LoadTestSqlTrace]([LoadTestRunId]) --ON [PRIMARY]
-- Create indices on detail tables
CREATE NONCLUSTERED INDEX [LoadTestTestDetail4] ON [LoadTestTestDetail] ([LoadTestRunId] ASC, [TestCaseId] ASC,[InMeasurementInterval] ASC, [ElapsedTime] DESC)
CREATE NONCLUSTERED INDEX [LoadTestTestDetail5] ON [LoadTestTestDetail] ([LoadTestRunId] ASC, [TestCaseId] ASC) INCLUDE ([TestDetailId],[AgentId],[BrowserId],[NetworkId],[TestLogId],[UserId])
CREATE NONCLUSTERED INDEX [LoadTestTestDetail6] ON [LoadTestTestDetail] ([LoadTestRunId] ASC, [TestCaseId] ASC, [EndTime] ASC,[Outcome] ASC,[TimeStamp] ASC,[TestDetailId] ASC,[AgentId] ASC,[NetworkId] ASC,[UserId] ASC) INCLUDE ( [ElapsedTime], [TestLogId])
CREATE NONCLUSTERED INDEX [LoadTestTestDetail7] ON [LoadTestTestDetail] ([LoadTestRunId] ASC,[NetworkId] ASC) INCLUDE ([TestDetailId])
CREATE NONCLUSTERED INDEX [LoadTestTransactionDetail4] ON [LoadTestTransactionDetail] ([LoadTestRunId] ASC, [TransactionId] ASC,[InMeasurementInterval] ASC, [ResponseTime] DESC, [TestDetailId] ASC ) INCLUDE ( [TimeStamp],[EndTime])
CREATE NONCLUSTERED INDEX [LoadTestTransactionDetail5] ON [LoadTestTransactionDetail] ([LoadTestRunId] ASC,[TransactionId] ASC,[EndTime] ASC,[TimeStamp] ASC,[TestDetailId] ASC, [TransactionDetailId] ASC) INCLUDE ( [ElapsedTime])
CREATE NONCLUSTERED INDEX [LoadTestPageDetail4] ON [LoadTestPageDetail] ([LoadTestRunId] ASC, [PageId] ASC,[InMeasurementInterval] ASC,[ResponseTime] DESC ) INCLUDE ([TestDetailId],[ResponseTimeGoal])
CREATE NONCLUSTERED INDEX [LoadTestPageDetail5] ON [LoadTestPageDetail] ([LoadTestRunId] ASC, [PageId] ASC, [TestDetailId] ASC, [EndTime] ASC, [Outcome] ASC, [TimeStamp] ASC, [PageDetailId] ASC) INCLUDE ( [ResponseTime])
CREATE NONCLUSTERED INDEX [LoadTestPageDetail6] ON [LoadTestPageDetail] ([LoadTestRunId] ASC, [PageId] ASC, [GoalExceeded] ASC, [InMeasurementInterval] ASC)
CREATE NONCLUSTERED INDEX ix_LoadTestDetailMessage_LoadTestRunId_TestDetailId_PageDetailId__MessageTypeId ON
dbo.LoadTestDetailMessage
(
[LoadTestRunId] ASC,
[TestDetailId] ASC,
[PageDetailId] ASC,
[MessageTypeId] ASC
)
CREATE NONCLUSTERED INDEX ix_WebLoadTestRequestMap_RequestId_LoadTestRunId_TestCaseId ON
dbo.WebLoadTestRequestMap
(
[RequestId] ASC,
[LoadTestRunId] ASC
)
INCLUDE ( [TestCaseId])
/* Statistics to support recommendations */
CREATE STATISTICS [hind_98099390_6A] ON [loadtestpagedetail] ([responsetime])
CREATE STATISTICS [hind_98099390_1A_3A_5A_6D] ON [loadtestpagedetail] ([loadtestrunid], [testdetailid], [pageid], [responsetime])
ALTER TABLE [LoadTestCase] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestMessage] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestThresholdMessage] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestPerformanceCounter] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestPerformanceCounterCategory] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestPerformanceCounterInstance] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestPerformanceCounterSample] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestRunAgent] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestRunInterval] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestScenario] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [WebLoadTestErrorDetail] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [WebLoadTestRequestMap] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [WebLoadTestTransaction] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestSqlTrace] ADD
FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestSystemUnderTest]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestSystemUnderTestTag]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestTestLog]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestDataCollectorLog]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestFileAttachment]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
ALTER TABLE [LoadTestFileAttachmentChunk]
ADD FOREIGN KEY
(
[LoadTestRunId]
) REFERENCES [LoadTestRun] (
[LoadTestRunId]
)
CREATE TABLE [LoadTestReport](
[ReportId] [INT] IDENTITY(1,1) NOT NULL,
[Name] [NVARCHAR](255) NOT NULL,
[Description] [NVARCHAR](MAX) NULL,
[LoadTestName] [NVARCHAR](255) NOT NULL,
[LastRunId] [INT] NOT NULL,
[SelectNewRuns] [BIT] NOT NULL,
[LastModified] DATETIME NOT NULL,
[LastModifiedBy] [NVARCHAR](255) NOT NULL,
[ReportType] [TINYINT] NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestReport] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[ReportId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestReport] TO PUBLIC
CREATE TABLE [LoadTestReportRuns](
[ReportId] [INT] NOT NULL,
[LoadTestRunId] [INT] NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestReportRuns] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[ReportId],
[LoadTestRunId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestReportRuns] TO PUBLIC
CREATE TABLE [LoadTestReportPage](
[PageId] [INT] IDENTITY(1,1) NOT NULL,
[ReportId] [INT] NOT NULL,
[CategoryName] [nvarchar](255) NOT NULL,
[CounterName] [nvarchar](255) NOT NULL
) --ON [PRIMARY]
ALTER TABLE [LoadTestReportPage] WITH NOCHECK ADD
PRIMARY KEY CLUSTERED
(
[PageId]
) --ON [PRIMARY]
--GRANT SELECT, INSERT, UPDATE ON [LoadTestReportPage] TO PUBLIC
END
GO
-- Drop add re add the stored procedures and views
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByRequest]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByRequest]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByAgent]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByAgent]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByTest]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByTest]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByType]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesAll]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesAll]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetErrorDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetErrorDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetTestCases]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetTestCases]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_DeleteLoadTestRun]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_DeleteLoadTestRun]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetAgents]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetAgents]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetCategories]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetCategories]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetInstanceSummaries]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetInstanceSummaries]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesTypeSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesTypeSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetRequestMap]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetRequestMap]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetRequestMap2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetRequestMap2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetSamplesForInstance]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetSamplesForInstance]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetFirstSampleForInstance]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetFirstSampleForInstance]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetLastSampleForInstance]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetLastSampleForInstance]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetTransactionMap]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetTransactionMap]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertSample]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertSqlTraceRow]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertSqlTraceRow]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateInstanceSummaryData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateInstanceSummaryData]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetCompletedLoadTestRuns]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetCompletedLoadTestRuns]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTestDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTestDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTestDetai2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTestDetai2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTransactionDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTransactionDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTransactionDetail2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTransactionDetail2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertPageDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertPageDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertPageDetail2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertPageDetail2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertLoadTestMessageType]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertLoadTestMessageType]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertLoadTestDetailMessage]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertLoadTestDetailMessage]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetAvailableDetailTypes]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetAvailableDetailTypes]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTestPercentiles]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTestPercentiles]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTestSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTestSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTestSummary3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTestSummary3]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTestSummary4]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTestSummary4]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTransactionPercentiles]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTransactionPercentiles]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTransactionSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTransactionSummary]
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTransactionSummary3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTransactionSummary3]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateTransactionSummary4]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateTransactionSummary4]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePagePercentiles]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePagePercentiles]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummary3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummary3]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummary4]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummary4]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageByNetworkPercentiles]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageByNetworkPercentiles]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummaryByNetwork]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummaryByNetwork]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummaryByNetwork3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummaryByNetwork3]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdatePageSummaryByNetwork4]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdatePageSummaryByNetwork4]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateSummaryData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateSummaryData]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateSummaryData]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateSummaryData]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateSummaryData2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateSummaryData2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateSummaryData3]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateSummaryData3]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_UpdateSummaryData4]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_UpdateSummaryData4]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_--GRANTDBAccess]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_--GRANTDBAccess]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByRequest2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByRequest2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByAgent2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByAgent2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByTest2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByTest2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesByType2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesByType2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_DeleteDataCollectorLogs]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_DeleteDataCollectorLogs]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetMessagesAll2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetMessagesAll2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetTestLog]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetTestLog]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTestDetail2]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTestDetail2]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertTestLog]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertTestLog]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_InsertFileAttachmentChunk]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_InsertFileAttachmentChunk]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_CreateLoadTestReport]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_CreateLoadTestReport]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_UpdateLoadTestReport]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_UpdateLoadTestReport]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_FindLoadTestReport]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_FindLoadTestReport]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_QueryLoadTestReports]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_QueryLoadTestReports]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_QueryForInstanceCount]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_QueryForInstanceCount]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_QueryLoadTestRuns]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_QueryLoadTestRuns]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_QueryLoadTestRunsById]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_QueryLoadTestRunsById]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[prc_QueryPossibleCountersForReport]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [prc_QueryPossibleCountersForReport]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetUniqueDetailIds]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetUniqueDetailIds]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetUserTestDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetUserTestDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetUserPageDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetUserPageDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetUserTransactionDetail]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetUserTransactionDetail]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_GetInitialDetailRange]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_GetInitialDetailRange]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryComputedCounterSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryComputedCounterSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryLoadTestPageSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryLoadTestPageSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryLoadTestTestCaseSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryLoadTestTestCaseSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryLoadTestTransactionSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryLoadTestTransactionSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryLoadTestRequestSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryLoadTestRequestSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[Prc_QueryLoadTestScenarioSummary]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [Prc_QueryLoadTestScenarioSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestComputedCounterSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestComputedCounterSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestMessageView]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestMessageView]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestMessageSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestMessageSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestWebRequestCounterSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestWebRequestCounterSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestPageSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestPageSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestWebPageAndUserLoadCounterSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestWebPageAndUserLoadCounterSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTransactionSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestTransactionSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTransactionSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestTransactionSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestWebRequestCounterSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestWebRequestCounterSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestPageSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestPageSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTestCaseSample]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestTestCaseSample]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTestCaseSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestTestCaseSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestComputedCounterSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view [LoadTestComputedCounterSummary]
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTestResults]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestTestResults
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestTransactionResults]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestTransactionResults
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestPageResults]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestPageResults
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestPageResultsByNetwork]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestPageResultsByNetwork
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestMessageView2]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestMessageView2
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestRequestSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestRequestSummary
GO
if exists (select * from dbo.sysobjects where id = object_id(N'[LoadTestScenarioSummary]') and OBJECTPROPERTY(id, N'IsView') = 1)
drop view LoadTestScenarioSummary
GO
-- Create views
CREATE VIEW [LoadTestComputedCounterSample] AS
SELECT category.LoadTestRunId, category.MachineName, category.CategoryName, counter.CounterName,
instance.InstanceName, interval.IntervalStartTime, interval.IntervalEndTime,
countersample.CounterType, countersample.ComputedValue, countersample.RawValue, countersample.ThresholdRuleResult
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
WHERE countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestComputedCounterSample] TO PUBLIC
GO
CREATE VIEW [LoadTestMessageView] AS
SELECT
message.LoadTestRunId,
agent.AgentName,
scenario.ScenarioName,
testcase.TestCaseName,
requestmap.RequestUri,
message.MessageId,
message.MessageTimeStamp,
message.MessageType,
message.SubType,
message.MessageText,
message.StackTrace,
message.RequestId,
HasWebTestErrorDetail =
CASE ISNULL(detail.MessageId,-1)
WHEN -1 THEN 'false'
ELSE 'true'
END
FROM LoadTestMessage as message
LEFT OUTER JOIN LoadTestCase AS testcase
ON message.LoadTestRunId = testcase.LoadTestRunId
AND message.TestCaseId = testcase.TestCaseId
LEFT OUTER JOIN LoadTestScenario AS scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
LEFT OUTER JOIN LoadTestRunAgent AS agent
ON message.LoadTestRunId = agent.LoadTestRunId
AND message.AgentId = agent.AgentId
LEFT OUTER JOIN WebLoadTestRequestMap AS requestmap
ON message.LoadTestRunId = requestmap.LoadTestRunId
AND message.RequestId = requestmap.RequestId
LEFT OUTER JOIN WebLoadTestErrorDetail AS detail
ON message.LoadTestRunId = detail.LoadTestRunId
AND message.MessageId = detail.MessageId
AND message.AgentId = detail.AgentId
GO
--GRANT SELECT ON [LoadTestMessageView] TO PUBLIC
GO
CREATE VIEW [LoadTestMessageView2] AS
SELECT
message.LoadTestRunId,
agent.AgentName,
scenario.ScenarioName,
testcase.TestCaseName,
requestmap.RequestUri,
message.MessageId,
message.MessageTimeStamp,
message.MessageType,
message.SubType,
message.MessageText,
message.StackTrace,
message.RequestId,
HasWebTestErrorDetail =
CASE ISNULL(detail.MessageId,-1)
WHEN -1 THEN 'false'
ELSE 'true'
END,
testLog.TestLogId
FROM LoadTestMessage as message
LEFT OUTER JOIN LoadTestCase AS testcase
ON message.LoadTestRunId = testcase.LoadTestRunId
AND message.TestCaseId = testcase.TestCaseId
LEFT OUTER JOIN LoadTestScenario AS scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
LEFT OUTER JOIN LoadTestRunAgent AS agent
ON message.LoadTestRunId = agent.LoadTestRunId
AND message.AgentId = agent.AgentId
LEFT OUTER JOIN WebLoadTestRequestMap AS requestmap
ON message.LoadTestRunId = requestmap.LoadTestRunId
AND message.RequestId = requestmap.RequestId
LEFT OUTER JOIN WebLoadTestErrorDetail AS detail
ON message.LoadTestRunId = detail.LoadTestRunId
AND message.MessageId = detail.MessageId
AND message.AgentId = detail.AgentId
LEFT OUTER JOIN LoadTestTestLog AS testLog
ON message.LoadTestRunId = testLog.LoadTestRunId
AND message.AgentId = testLog.AgentId
AND message.TestLogId = testLog.TestLogId
GO
--GRANT SELECT ON [LoadTestMessageView2] TO PUBLIC
GO
CREATE VIEW [LoadTestMessageSummary] AS
SELECT
message.LoadTestRunId,
agent.AgentName,
scenario.ScenarioName,
testcase.TestCaseName,
requestmap.RequestUri,
message.MessageId,
message.MessageTimeStamp,
MessageType =
CASE message.MessageType
WHEN 0 THEN 'TestError'
WHEN 1 THEN 'Exception'
WHEN 2 THEN 'HttpError'
WHEN 3 THEN 'ValidationRuleError'
WHEN 4 THEN 'ExtractionRuleError'
WHEN 5 THEN 'Timeout'
WHEN 6 THEN 'DataCollectionError'
WHEN 7 THEN 'DataCollectionWarning'
ELSE 'Unknown'
END,
message.SubType,
message.MessageText,
message.StackTrace,
message.RequestId,
HasWebTestErrorDetail =
CASE ISNULL(detail.MessageId,-1)
WHEN -1 THEN 'false'
ELSE 'true'
END
FROM LoadTestMessage as message
LEFT OUTER JOIN LoadTestCase AS testcase
ON message.LoadTestRunId = testcase.LoadTestRunId
AND message.TestCaseId = testcase.TestCaseId
LEFT OUTER JOIN LoadTestScenario AS scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
LEFT OUTER JOIN LoadTestRunAgent AS agent
ON message.LoadTestRunId = agent.LoadTestRunId
AND message.AgentId = agent.AgentId
LEFT OUTER JOIN WebLoadTestRequestMap AS requestmap
ON message.LoadTestRunId = requestmap.LoadTestRunId
AND message.RequestId = requestmap.RequestId
LEFT OUTER JOIN WebLoadTestErrorDetail AS detail
ON message.LoadTestRunId = detail.LoadTestRunId
AND message.MessageId = detail.MessageId
AND message.AgentId = detail.AgentId
GO
--GRANT SELECT ON [LoadTestMessageSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestWebRequestCounterSample] AS
SELECT category.LoadTestRunId, counter.CounterName,
scenario.ScenarioName, testcase.TestCaseName, request.RequestUri,
interval.IntervalStartTime, interval.IntervalEndTime,
countersample.CounterType, countersample.ComputedValue
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
INNER JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
INNER JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Request' and countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestWebRequestCounterSample] TO PUBLIC
GO
CREATE VIEW [LoadTestPageSample] AS
SELECT category.LoadTestRunId, counter.CounterName,
scenario.ScenarioName, testcase.TestCaseName, request.RequestUri,
interval.IntervalStartTime, interval.IntervalEndTime,
countersample.ComputedValue
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
INNER JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
INNER JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Page' and countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestPageSample] TO PUBLIC
GO
CREATE VIEW [LoadTestWebPageAndUserLoadCounterSample] AS
Select
counter.loadtestrunid,
instance.instanceName,
request.RequestUri,
interval.IntervalStartTime,
(Select ComputedValue from LoadTestComputedCounterSample
where (CounterName = 'User Load' and instanceName = '_total')
AND intervalstartTime = interval.IntervalStartTime) As UserLoad,
countersample.ComputedValue As ResponseTime,
(Select ComputedValue from LoadTestComputedCounterSample
where (countername = 'Requests / sec' and instanceName = instance.instancename)
AND intervalstartTime = interval.IntervalStartTime) as RPS
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
INNER JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
INNER JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE counter.countername = 'Page Response Time' and
countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestWebPageAndUserLoadCounterSample] TO PUBLIC
GO
CREATE VIEW [LoadTestTransactionSample] AS
SELECT category.LoadTestRunId, counter.CounterName,
scenario.ScenarioName, testcase.TestCaseName, transactions.TransactionName,
interval.IntervalStartTime, interval.IntervalEndTime,
countersample.ComputedValue
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
INNER JOIN WebLoadTestTransaction AS transactions
ON transactions.LoadTestRunId = instance.LoadTestRunId
AND transactions.TransactionId = instance.LoadTestItemId
INNER JOIN LoadTestCase As testcase
ON transactions.LoadTestRunId = testcase.LoadTestRunId
AND transactions.TestCaseId = testcase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Transaction' and countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestTransactionSample] TO PUBLIC
GO
CREATE VIEW [LoadTestTransactionSummary] AS
SELECT run.LoadTestName,
category.LoadTestRunId,
counter.CounterName,
ISNULL(scenario.ScenarioName,'_Total') as ScenarioName,
ISNULL(testcase.TestCaseName,'_Total') as TestCaseName,
ISNULL(transactions.TransactionName,'_Total') as TransactionName,
instance.CumulativeValue
FROM LoadTestRun as run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
LEFT JOIN WebLoadTestTransaction AS transactions
ON transactions.LoadTestRunId = instance.LoadTestRunId
AND transactions.TransactionId = instance.LoadTestItemId
LEFT JOIN LoadTestCase As testcase
ON transactions.LoadTestRunId = testcase.LoadTestRunId
AND transactions.TestCaseId = testcase.TestCaseId
LEFT JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Transaction' and instance.CumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestTransactionSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestWebRequestCounterSummary] AS
SELECT category.LoadTestRunId, counter.CounterName,
scenario.ScenarioName, testcase.TestCaseName, request.RequestUri,
instance.CumulativeValue
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
INNER JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Request' and instance.CumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestWebRequestCounterSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestPageSummary] AS
SELECT run.LoadTestName,
category.LoadTestRunId,
counter.CounterName,
ISNULL(scenario.ScenarioName,'_Total') as ScenarioName,
ISNULL(testcase.TestCaseName,'_Total') as TestCaseName,
ISNULL(request.RequestUri,'_Total') as RequestUri,
instance.CumulativeValue,
ISNULL(request.ResponseTimeGoal,0) AS ResponseTimeGoal
FROM LoadTestRun AS run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
LEFT JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
LEFT JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
LEFT JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Page' and instance.CumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestPageSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestComputedCounterSummary] AS
SELECT run.LoadTestName, category.LoadTestRunId, category.MachineName, category.CategoryName, counter.CounterName,
counter.HigherIsBetter,instance.InstanceName, instance.CumulativeValue, instance.OverallThresholdRuleResult
FROM LoadTestRun as run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
WHERE instance.cumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestComputedCounterSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestTestCaseSample] AS
SELECT category.LoadTestRunId, counter.CounterName,
scenario.ScenarioName, testcase.TestCaseName,
interval.IntervalStartTime, interval.IntervalEndTime,
countersample.ComputedValue
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterSample AS countersample
ON countersample.InstanceId = instance.InstanceId
AND countersample.LoadTestRunId = instance.LoadTestRunId
INNER JOIN LoadTestRunInterval AS interval
ON interval.LoadTestRunId = countersample.LoadTestRunId
AND interval.TestRunIntervalId = countersample.TestRunIntervalId
INNER JOIN LoadTestCase As testcase
ON testcase.LoadTestRunId = instance.LoadTestRunId
AND testcase.TestCaseId = instance.LoadTestItemId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Test' and countersample.ComputedValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestTestCaseSample] TO PUBLIC
GO
CREATE VIEW LoadTestTestCaseSummary AS
SELECT run.LoadTestName,
category.LoadTestRunId,
counter.CounterName,
ISNULL(scenario.ScenarioName,'_Total') as ScenarioName,
ISNULL(testcase.TestCaseName,'_Total') as TestCaseName,
instance.CumulativeValue
FROM LoadTestRun AS run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
LEFT JOIN LoadTestCase As testcase
ON counter.LoadTestRunId = testcase.LoadTestRunId
AND testcase.TestCaseId = instance.LoadTestItemId
LEFT JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Test' and instance.CumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestTestCaseSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestRequestSummary] AS
SELECT run.LoadTestName,
category.LoadTestRunId,
counter.CounterName,
ISNULL(scenario.ScenarioName,'_Total') as ScenarioName,
ISNULL(testcase.TestCaseName,'_Total') as TestCaseName,
ISNULL(request.RequestUri,'_Total') as RequestUri,
instance.CumulativeValue
FROM LoadTestRun AS run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
LEFT JOIN WebLoadTestRequestMap AS request
ON request.LoadTestRunId = instance.LoadTestRunId
AND request.RequestId = instance.LoadTestItemId
LEFT JOIN LoadTestCase As testcase
ON request.LoadTestRunId = testcase.LoadTestRunId
AND request.TestCaseId = testcase.TestCaseId
LEFT JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE category.CategoryName = 'LoadTest:Request' and instance.CumulativeValue IS NOT NULL
GO
--GRANT SELECT ON [LoadTestRequestSummary] TO PUBLIC
GO
CREATE VIEW [LoadTestScenarioSummary] AS
SELECT run.LoadTestName AS LoadTestName,
category.LoadTestRunId AS LoadTestRunId,
counter.CounterName AS CounterName,
CASE instance.InstanceName WHEN '_Total' THEN '_Total' ELSE scenario.ScenarioName END AS ScenarioName,
instance.CumulativeValue AS CumulativeValue
FROM LoadTestRun AS run
INNER JOIN LoadTestScenario As scenario
ON run.LoadTestRunId = scenario.LoadTestRunId
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON scenario.LoadTestRunId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
AND (instance.InstanceName = scenario.ScenarioName OR instance.InstanceName = '_Total')
WHERE category.CategoryName = 'LoadTest:Scenario'
AND instance.CumulativeValue IS NOT NULL
GROUP BY LoadTestName, category.LoadTestRunId, CounterName,CASE instance.InstanceName WHEN '_Total' THEN '_Total' ELSE scenario.ScenarioName END,CumulativeValue
GO
--GRANT SELECT ON [LoadTestScenarioSummary] TO PUBLIC
GO
-- New views
CREATE VIEW LoadTestTestResults AS
SELECT
testSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
testSummary.TestsRun,
testSummary.Minimum,
testSummary.Average,
testSummary.Percentile90,
testSummary.Percentile95,
testSummary.Maximum
FROM LoadTestTestSummaryData AS testSummary
INNER JOIN LoadTestCase as testCase
ON testSummary.LoadTestRunId = testCase.LoadTestRunId
AND testSummary.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
GO
--GRANT SELECT ON LoadTestTestResults TO PUBLIC
GO
CREATE VIEW LoadTestTransactionResults AS
SELECT
transactionSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
transactions.TransactionName,
transactionSummary.TransactionCount,
transactionSummary.Minimum,
transactionSummary.Average,
transactionSummary.Percentile90,
transactionSummary.Percentile95,
transactionSummary.Maximum
FROM LoadTestTransactionSummaryData AS transactionSummary
INNER JOIN WebLoadTestTransaction AS transactions
ON transactionSummary.LoadTestRunId = transactions.LoadTestRunId
AND transactionSummary.TransactionId = transactions.TransactionId
INNER JOIN LoadTestCase as testCase
ON transactions.LoadTestRunId = testCase.LoadTestRunId
AND transactions.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
GO
--GRANT SELECT ON LoadTestTransactionResults TO PUBLIC
GO
CREATE VIEW [LoadTestTransactionResults2] AS
SELECT
transactionSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
transactions.TransactionName,
transactionSummary.TransactionCount,
transactionSummary.Minimum,
transactionSummary.Average,
transactionSummary.Percentile90,
transactionSummary.Percentile95,
transactionSummary.Maximum,
transactionSummary.Median,
transactionSummary.Percentile99,
transactionSummary.StandardDeviation,
transactionSummary.AvgTransactionTime
FROM LoadTestTransactionSummaryData AS transactionSummary
INNER JOIN WebLoadTestTransaction AS transactions
ON transactionSummary.LoadTestRunId = transactions.LoadTestRunId
AND transactionSummary.TransactionId = transactions.TransactionId
INNER JOIN LoadTestCase as testCase
ON transactions.LoadTestRunId = testCase.LoadTestRunId
AND transactions.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
GO
--GRANT SELECT ON LoadTestTransactionResults2 TO PUBLIC
GO
CREATE VIEW LoadTestPageResults AS
SELECT
pageSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
requestMap.RequestUri,
pageSummary.PageCount,
pageSummary.Minimum,
pageSummary.Average,
pageSummary.Percentile90,
pageSummary.Percentile95,
pageSummary.Maximum
FROM LoadTestPageSummaryData AS pageSummary
INNER JOIN WebLoadTestRequestMap AS requestMap
ON pageSummary.LoadTestRunId = requestMap.LoadTestRunId
AND pageSummary.PageId = requestMap.requestId
INNER JOIN LoadTestCase as testCase
ON requestMap.LoadTestRunId = testCase.LoadTestRunId
AND requestMap.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
GO
--GRANT SELECT ON LoadTestPageResults TO PUBLIC
GO
CREATE VIEW LoadTestPageResultsByNetwork AS
SELECT
pageSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
requestMap.RequestUri,
networks.NetworkName,
pageSummary.PageCount,
pageSummary.Minimum,
pageSummary.Average,
pageSummary.Percentile90,
pageSummary.Percentile95,
pageSummary.Maximum,
pageSummary.Goal,
pageSummary.PagesMeetingGoal
FROM LoadTestPageSummaryByNetwork AS pageSummary
INNER JOIN WebLoadTestRequestMap AS requestMap
ON pageSummary.LoadTestRunId = requestMap.LoadTestRunId
AND pageSummary.PageId = requestMap.requestId
INNER JOIN LoadTestCase as testCase
ON requestMap.LoadTestRunId = testCase.LoadTestRunId
AND requestMap.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
INNER JOIN LoadTestNetworks as networks
ON pageSummary.LoadTestRunId = networks.LoadTestRunId
AND pageSummary.NetworkId = networks.NetworkId
GO
--GRANT SELECT ON LoadTestPageResultsByNetwork TO PUBLIC
GO
CREATE VIEW LoadTestPageResultsByNetwork2 AS
SELECT
pageSummary.LoadTestRunId,
scenario.ScenarioName,
testCase.TestCaseName,
requestMap.RequestUri,
networks.NetworkName,
pageSummary.PageCount,
pageSummary.Minimum,
pageSummary.Average,
pageSummary.Median,
pageSummary.Percentile90,
pageSummary.Percentile95,
pageSummary.Percentile99,
pageSummary.Maximum,
pageSummary.StandardDeviation,
pageSummary.Goal,
pageSummary.PagesMeetingGoal
FROM LoadTestPageSummaryByNetwork AS pageSummary
INNER JOIN WebLoadTestRequestMap AS requestMap
ON pageSummary.LoadTestRunId = requestMap.LoadTestRunId
AND pageSummary.PageId = requestMap.requestId
INNER JOIN LoadTestCase as testCase
ON requestMap.LoadTestRunId = testCase.LoadTestRunId
AND requestMap.TestCaseId = testCase.TestCaseId
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
INNER JOIN LoadTestNetworks as networks
ON pageSummary.LoadTestRunId = networks.LoadTestRunId
AND pageSummary.NetworkId = networks.NetworkId
GO
--GRANT SELECT ON LoadTestPageResultsByNetwork2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetCompletedLoadTestRuns
AS
SELECT LoadTestRunId,
RunId,
LoadTestName,
Description,
StartTime,
EndTime,
IsLocalRun,
ControllerName
FROM LoadTestRun
WHERE
LoadTestName IS NOT NULL AND
StartTime IS NOT NULL AND
EndTime IS NOT NULL
ORDER BY LoadTestRunId
--GRANT EXECUTE ON Prc_GetCompletedLoadTestRuns TO PUBLIC
GO
CREATE PROCEDURE Prc_DeleteDataCollectorLogs @LoadTestRunId int
AS
BEGIN
DECLARE @DataCollectorLogId int
DECLARE LogCursor CURSOR FOR
SELECT DataCollectorLogId FROM LoadTestDataCollectorLog WHERE LoadTestRunId = @LoadTestRunId
OPEN LogCursor
FETCH NEXT FROM LogCursor INTO @DataCollectorLogId
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @DropStmt nvarchar(255)
Set @DropStmt = N'DROP TABLE LoadTestLogData_Run' + RTRIM(CONVERT(nvarchar, @LoadTestRunId)) + N'_Log' + RTRIM(CONVERT(nvarchar, @DataCollectorLogId));
EXEC (@DropStmt);
FETCH NEXT FROM LogCursor INTO @DataCollectorLogId
END
CLOSE LogCursor
DEALLOCATE LogCursor
END
--GRANT EXECUTE ON Prc_DeleteDataCollectorLogs TO PUBLIC
GO
CREATE PROCEDURE Prc_DeleteLoadTestRun @LoadTestRunId int
AS
BEGIN
-- First delete the data collector log tables
EXEC Prc_DeleteDataCollectorLogs @LoadTestRunId
----------------------------------------------------------------
-- TempTable to handle the tables to use for delete.
-- rownum will insure we retrieve in the right order
-- so foreign key constraints don't bite us
DECLARE @Temp TABLE
(rownum int
, tableToUse nvarchar(50))
-- Build out temp table,
INSERT INTO @temp VALUES(1, 'LoadTestFileAttachmentChunk')
INSERT INTO @temp VALUES(2, 'LoadTestFileAttachment')
INSERT INTO @temp VALUES(3, 'LoadTestDataCollectorLog')
INSERT INTO @temp VALUES(4, 'LoadTestTestLog')
INSERT INTO @temp VALUES(5, 'LoadTestBrowsers')
INSERT INTO @temp VALUES(6, 'LoadTestNetworks')
INSERT INTO @temp VALUES(7, 'LoadTestDetailMessage')
INSERT INTO @temp VALUES(8, 'LoadTestTestDetail')
INSERT INTO @temp VALUES(9, 'LoadTestPageDetail')
INSERT INTO @temp VALUES(10, 'LoadTestTransactionDetail')
INSERT INTO @temp VALUES(11, 'LoadTestTestSummaryData')
INSERT INTO @temp VALUES(12, 'LoadTestTransactionSummaryData')
INSERT INTO @temp VALUES(13, 'LoadTestPageSummaryData')
INSERT INTO @temp VALUES(14, 'LoadTestPageSummaryByNetwork')
INSERT INTO @temp VALUES(15, 'LoadTestCase')
INSERT INTO @temp VALUES(16, 'LoadTestMessage')
INSERT INTO @temp VALUES(17, 'LoadTestMessageType')
INSERT INTO @temp VALUES(18, 'LoadTestThresholdMessage')
INSERT INTO @temp VALUES(19, 'LoadTestPerformanceCounter')
INSERT INTO @temp VALUES(20, 'LoadTestPerformanceCounterCategory')
INSERT INTO @temp VALUES(21, 'LoadTestPerformanceCounterInstance')
INSERT INTO @temp VALUES(22, 'LoadTestPerformanceCounterSample')
INSERT INTO @temp VALUES(23, 'LoadTestRunAgent')
INSERT INTO @temp VALUES(24, 'LoadTestRunInterval')
INSERT INTO @temp VALUES(25, 'LoadTestScenario')
INSERT INTO @temp VALUES(26, 'LoadTestSqlTrace')
INSERT INTO @temp VALUES(27, 'WebLoadTestErrorDetail')
INSERT INTO @temp VALUES(28, 'WebLoadTestTransaction')
INSERT INTO @temp VALUES(29, 'WebLoadTestRequestMap')
INSERT INTO @temp VALUES(30, 'LoadTestSystemUnderTestTag')
INSERT INTO @temp VALUES(31, 'LoadTestSystemUnderTest')
INSERT INTO @temp VALUES(32, 'LoadTestRun')
----------------------------------------------------------------
-- Variables to control the behavior of the query
DECLARE @iEndOfTable int
DECLARE @iRowsToDelete int
DECLARE @iRownum int
DECLARE @tableName nvarchar(50)
DECLARE @QueryToUse nvarchar(500)
set @iEndOfTable = 0
SET @iRowsToDelete = 10000
SET @iRownum = 1
WHILE @iRownum < 33
BEGIN
SELECT @tableName = tableToUse FROM @TEMP WHERE rownum = @iRownum
WHILE @iEndOfTable = 0
BEGIN
SET @QueryToUse = 'DELETE TOP(' + CAST(@iRowsToDelete AS nvarchar(10)) + ') FROM ' +
@tableName + ' WHERE LoadTestRunId = ' + CAST(@LoadTestRunId AS nvarchar(10))
EXECUTE sp_executesql @QueryToUse
IF (@@rowcount < @iRowsToDelete)
SET @iEndOfTable = 1
END
SET @iRownum = @iRownum + 1
SET @iEndOfTable = 0
END
END
GO
--GRANT EXECUTE ON Prc_DeleteLoadTestRun TO PUBLIC
GO
CREATE PROCEDURE Prc_GetAgents @LoadTestRunId int
AS
SELECT AgentId, AgentName
FROM LoadTestRunAgent
WHERE LoadTestRunId = @LoadTestRunId
ORDER BY AgentId
GO
--GRANT EXECUTE ON Prc_GetAgents TO PUBLIC
GO
CREATE PROCEDURE Prc_GetCategories @LoadTestRunId int
AS
SELECT CounterCategoryId, CategoryName, MachineName, StartTimeStamp100nSec
FROM LoadTestPerformanceCounterCategory
WHERE LoadTestRunId = @LoadTestRunId
ORDER BY CounterCategoryId
GO
--GRANT EXECUTE ON Prc_GetCategories TO PUBLIC
GO
CREATE PROCEDURE Prc_GetInstanceSummaries @LoadTestRunId int
AS
SELECT
instance.InstanceId,
category.MachineName,
category.CategoryName,
counter.CounterName,
instance.InstanceName,
instance.CumulativeValue,
instance.OverallThresholdRuleResult
FROM LoadTestPerformanceCounterCategory AS category
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
WHERE category.LoadTestRunId = @LoadTestRunId
ORDER BY category.MachineName, category.CategoryName, counter.CounterName, instance.InstanceName
GO
--GRANT EXECUTE ON Prc_GetInstanceSummaries TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesTypeSummary
@LoadTestRunId int
AS
SELECT DISTINCT MessageType, SubType, COUNT(*) as Count
FROM LoadTestMessage
WHERE LoadTestRunId = @LoadTestRunId
GROUP BY MessageType, SubType
ORDER BY Count DESC
GO
--GRANT EXECUTE ON Prc_GetMessagesTypeSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_GetRequestMap @LoadTestRunId int
AS
SELECT
RequestId,
TestCaseId,
RequestUri
FROM WebLoadTestRequestMap
WHERE LoadTestRunId = @LoadTestRunId
ORDER BY RequestId
GO
--GRANT EXECUTE ON Prc_GetRequestMap TO PUBLIC
GO
CREATE PROCEDURE Prc_GetRequestMap2 @LoadTestRunId int
AS
SELECT
RequestId,
TestCaseId,
RequestUri,
ResponseTimeGoal
FROM WebLoadTestRequestMap
WHERE LoadTestRunId = @LoadTestRunId
ORDER BY RequestId
GO
--GRANT EXECUTE ON Prc_GetRequestMap2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetSamplesForInstance @LoadTestRunId int, @InstanceId int
AS
SELECT
interval.IntervalEndTime,
samples.RawValue,
samples.BaseValue,
samples.CounterFrequency,
samples.SystemFrequency,
samples.SampleTimeStamp,
samples.SampleTimeStamp100nSec,
samples.CounterType,
samples.ThresholdRuleResult
FROM LoadTestPerformanceCounterSample as samples
LEFT OUTER JOIN LoadTestRunInterval AS interval
ON samples.LoadTestRunId = interval.LoadTestRunId
AND samples.TestRunIntervalId = interval.TestRunIntervalId
WHERE samples.LoadTestRunId = @LoadTestRunId
AND samples.InstanceId = @InstanceId
ORDER BY samples.TestRunIntervalId
GO
--GRANT EXECUTE ON Prc_GetSamplesForInstance TO PUBLIC
GO
CREATE PROCEDURE Prc_GetFirstSampleForInstance @LoadTestRunId int, @InstanceId int
AS
SELECT TOP 1
interval.IntervalEndTime,
samples.RawValue,
samples.BaseValue,
samples.CounterFrequency,
samples.SystemFrequency,
samples.SampleTimeStamp,
samples.SampleTimeStamp100nSec,
samples.CounterType,
samples.ThresholdRuleResult
FROM LoadTestPerformanceCounterSample as samples
LEFT OUTER JOIN LoadTestRunInterval AS interval
ON samples.LoadTestRunId = interval.LoadTestRunId
AND samples.TestRunIntervalId = interval.TestRunIntervalId
WHERE samples.LoadTestRunId = @LoadTestRunId
AND samples.InstanceId = @InstanceId
ORDER BY samples.TestRunIntervalId
GO
--GRANT EXECUTE ON Prc_GetFirstSampleForInstance TO PUBLIC
GO
CREATE PROCEDURE Prc_GetLastSampleForInstance @LoadTestRunId int, @InstanceId int
AS
SELECT TOP 1
interval.IntervalEndTime,
samples.RawValue,
samples.BaseValue,
samples.CounterFrequency,
samples.SystemFrequency,
samples.SampleTimeStamp,
samples.SampleTimeStamp100nSec,
samples.CounterType,
samples.ThresholdRuleResult
FROM LoadTestPerformanceCounterSample as samples
LEFT OUTER JOIN LoadTestRunInterval AS interval
ON samples.LoadTestRunId = interval.LoadTestRunId
AND samples.TestRunIntervalId = interval.TestRunIntervalId
WHERE samples.LoadTestRunId = @LoadTestRunId
AND samples.InstanceId = @InstanceId
ORDER BY samples.TestRunIntervalId DESC
GO
--GRANT EXECUTE ON Prc_GetLastSampleForInstance TO PUBLIC
GO
CREATE PROCEDURE Prc_GetTransactionMap @LoadTestRunId int
AS
SELECT
TransactionId,
TestCaseId,
TransactionName
FROM WebLoadTestTransaction
WHERE LoadTestRunId = @LoadTestRunId
ORDER BY TransactionId
GO
--GRANT EXECUTE ON Prc_GetTransactionMap TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertSample
@LoadTestRunId int,
@TestRunIntervalId int,
@InstanceId int,
@ComputedValue real,
@RawValue bigint,
@BaseValue bigint,
@CounterFrequency bigint,
@SystemFrequency bigint,
@SampleTimeStamp bigint,
@SampleTimeStamp100nSec bigint,
@CounterType int,
@ThresholdRuleResult tinyint,
@ThresholdRuleMessageId int
AS
INSERT INTO LoadTestPerformanceCounterSample
(
LoadTestRunId,
TestRunIntervalId,
InstanceId,
ComputedValue,
RawValue,
BaseValue,
CounterFrequency,
SystemFrequency,
SampleTimeStamp,
SampleTimeStamp100nSec,
CounterType,
ThresholdRuleResult,
ThresholdRuleMessageId
)
VALUES(
@LoadTestRunId,
@TestRunIntervalId,
@InstanceId,
@ComputedValue,
@RawValue,
@BaseValue,
@CounterFrequency,
@SystemFrequency,
@SampleTimeStamp,
@SampleTimeStamp100nSec,
@CounterType,
@ThresholdRuleResult,
@ThresholdRuleMessageId
)
GO
--GRANT EXECUTE ON Prc_InsertSample TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertSqlTraceRow
@LoadTestRunId int,
@TextData ntext,
@Duration bigint,
@StartTime datetime,
@EndTime datetime,
@Reads bigint,
@Writes bigint,
@CPU int,
@EventClass int
AS
INSERT INTO LoadTestSqlTrace
(
LoadTestRunId,
TextData,
Duration,
StartTime,
EndTime,
Reads,
Writes,
CPU,
EventClass
)
VALUES(
@LoadTestRunId,
@TextData,
@Duration,
@StartTime,
@EndTime,
@Reads,
@Writes,
@CPU,
@EventClass
)
GO
--GRANT EXECUTE ON Prc_InsertSqlTraceRow TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateInstanceSummaryData
@LoadTestRunId int,
@InstanceId int,
@CumulativeValue float,
@OverallThresholdRuleResult tinyint
AS
UPDATE LoadTestPerformanceCounterInstance
SET CumulativeValue = @CumulativeValue,
OverallThresholdRuleResult = @OverallThresholdRuleResult
WHERE LoadTestRunId = @LoadTestRunId AND InstanceId = @InstanceId
GO
--GRANT EXECUTE ON Prc_UpdateInstanceSummaryData TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByRequest
@LoadTestRunId int, @RequestId int
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail
FROM LoadTestMessageView
WHERE
LoadTestRunId = @LoadTestRunId AND
RequestId = @RequestId
ORDER BY AgentName, MessageId
GO
--GRANT EXECUTE ON Prc_GetMessagesByRequest TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByRequest2
@LoadTestRunId int, @RequestId int
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail,
TestLogId
FROM LoadTestMessageView2
WHERE
LoadTestRunId = @LoadTestRunId AND
RequestId = @RequestId
ORDER BY AgentName, MessageId
GO
--GRANT EXECUTE ON Prc_GetMessagesByRequest2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByAgent
@LoadTestRunId int, @AgentName nvarchar(255)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail
FROM LoadTestMessageView
WHERE
LoadTestRunId = @LoadTestRunId AND
AgentName = @AgentName
ORDER BY AgentName, MessageId
GO
--GRANT EXECUTE ON Prc_GetMessagesByAgent TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByAgent2
@LoadTestRunId int, @AgentName nvarchar(255)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail,
TestLogId
FROM LoadTestMessageView2
WHERE
LoadTestRunId = @LoadTestRunId AND
AgentName = @AgentName
ORDER BY AgentName, MessageId
GO
--GRANT EXECUTE ON Prc_GetMessagesByAgent2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByTest
@LoadTestRunId int, @ScenarioName nvarchar(64), @TestCaseName nvarchar(64)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail
FROM LoadTestMessageView
WHERE
LoadTestRunId = @LoadTestRunId AND
ScenarioName = @ScenarioName AND
TestCaseName = @TestCaseName
ORDER BY AgentName, ScenarioName, TestCaseName
GO
--GRANT EXECUTE ON Prc_GetMessagesByTest TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByTest2
@LoadTestRunId int, @ScenarioName nvarchar(64), @TestCaseName nvarchar(64)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail,
TestLogId
FROM LoadTestMessageView2
WHERE
LoadTestRunId = @LoadTestRunId AND
ScenarioName = @ScenarioName AND
TestCaseName = @TestCaseName
ORDER BY AgentName, ScenarioName, TestCaseName
GO
--GRANT EXECUTE ON Prc_GetMessagesByTest2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByType
@LoadTestRunId int, @MessageType tinyint, @SubType nvarchar(64)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail
FROM LoadTestMessageView
WHERE
LoadTestRunId = @LoadTestRunId AND
MessageType = @MessageType AND
SubType = @SubType
ORDER BY AgentName, MessageType, SubType
GO
--GRANT EXECUTE ON Prc_GetMessagesByType TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesByType2
@LoadTestRunId int, @MessageType tinyint, @SubType nvarchar(64)
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail,
TestLogId
FROM LoadTestMessageView2
WHERE
LoadTestRunId = @LoadTestRunId AND
MessageType = @MessageType AND
SubType = @SubType
ORDER BY AgentName, MessageType, SubType
GO
--GRANT EXECUTE ON Prc_GetMessagesByType2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesAll
@LoadTestRunId int
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail
FROM LoadTestMessageView
WHERE
LoadTestRunId = @LoadTestRunId
ORDER BY AgentName, MessageType, SubType
GO
--GRANT EXECUTE ON Prc_GetMessagesAll TO PUBLIC
GO
CREATE PROCEDURE Prc_GetMessagesAll2
@LoadTestRunId int
AS
SELECT
AgentName,
ScenarioName,
TestCaseName,
RequestUri,
MessageId,
MessageTimeStamp,
MessageType,
SubType,
MessageText,
StackTrace,
HasWebTestErrorDetail,
TestLogId
FROM LoadTestMessageView2
WHERE
LoadTestRunId = @LoadTestRunId
ORDER BY AgentName, MessageType, SubType
GO
--GRANT EXECUTE ON Prc_GetMessagesAll2 TO PUBLIC
GO
CREATE PROCEDURE Prc_GetErrorDetail
@LoadTestRunId int, @AgentName nvarchar(255), @MessageId int
AS
SELECT
WebTestRequestResult
FROM WebLoadTestErrorDetail as detail
LEFT OUTER JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
WHERE
detail.LoadTestRunId = @LoadTestRunId AND
AgentName = @AgentName AND
MessageId = @MessageId
GO
--GRANT EXECUTE ON Prc_GetErrorDetail TO PUBLIC
GO
CREATE PROCEDURE Prc_GetTestLog
@LoadTestRunId int, @AgentName nvarchar(255), @TestLogId int
AS
SELECT
testLog.TestLog,
testcase.TestElement
FROM LoadTestTestLog as testLog
LEFT OUTER JOIN LoadTestCase AS testcase
ON testLog.LoadTestRunId = testcase.LoadTestRunId
AND testLog.TestCaseId = testcase.TestCaseId
LEFT OUTER JOIN LoadTestRunAgent AS agent
ON testLog.LoadTestRunId = agent.LoadTestRunId
AND testLog.AgentId = agent.AgentId
WHERE
testLog.LoadTestRunId = @LoadTestRunId AND
AgentName = @AgentName AND
TestLogId = @TestLogId
GO
--GRANT EXECUTE ON Prc_GetTestLog TO PUBLIC
GO
CREATE PROCEDURE Prc_GetTestCases @LoadTestRunId int
AS
SELECT
testcase.TestCaseId,
scenario.ScenarioName,
testcase.TestCaseName
FROM LoadTestCase AS testcase
INNER JOIN LoadTestScenario As scenario
ON testcase.LoadTestRunId = scenario.LoadTestRunId
AND testcase.ScenarioId = scenario.ScenarioId
WHERE testcase.LoadTestRunId = @LoadTestRunId
ORDER BY testcase.TestCaseId
GO
--GRANT EXECUTE ON Prc_GetTestCases TO PUBLIC
GO
-- New stored procedures
CREATE PROCEDURE Prc_InsertTestDetail
@LoadTestRunId int,
@TestDetailId int,
@TimeStamp datetime,
@TestCaseId int,
@ElapsedTime float,
@AgentId int,
@BrowserId int,
@NetworkId int
AS
INSERT INTO LoadTestTestDetail
(
LoadTestRunId,
TestDetailId,
TimeStamp,
TestCaseId,
ElapsedTime,
AgentId,
BrowserId,
NetworkId
)
VALUES(
@LoadTestRunId,
@TestDetailId,
@TimeStamp,
@TestCaseId,
@ElapsedTime,
@AgentId,
@BrowserId,
@NetworkId
)
GO
--GRANT EXECUTE ON Prc_InsertTestDetail TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertTestDetail2
@LoadTestRunId int,
@TestDetailId int,
@TimeStamp datetime,
@TestCaseId int,
@ElapsedTime float,
@AgentId int,
@BrowserId int,
@NetworkId int,
@Outcome tinyint,
@TestLogId int,
@UserId int,
@EndTime datetime,
@InMeasurementInterval bit
AS
INSERT INTO LoadTestTestDetail
(
LoadTestRunId,
TestDetailId,
TimeStamp,
TestCaseId,
ElapsedTime,
AgentId,
BrowserId,
NetworkId,
Outcome,
TestLogId,
UserId,
EndTime,
InMeasurementInterval
)
VALUES(
@LoadTestRunId,
@TestDetailId,
@TimeStamp,
@TestCaseId,
@ElapsedTime,
@AgentId,
@BrowserId,
@NetworkId,
@Outcome,
@TestLogId,
@UserId,
@EndTime,
@InMeasurementInterval
)
GO
--GRANT EXECUTE ON Prc_InsertTestDetail2 TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertTransactionDetail
@LoadTestRunId int,
@TransactionDetailId int,
@TestDetailId int,
@TimeStamp datetime,
@TransactionId int,
@ElapsedTime float
AS
INSERT INTO LoadTestTransactionDetail
(
LoadTestRunId,
TransactionDetailId,
TestDetailId,
TimeStamp,
TransactionId,
ElapsedTime
)
VALUES(
@LoadTestRunId,
@TransactionDetailId,
@TestDetailId,
@TimeStamp,
@TransactionId,
@ElapsedTime
)
GO
--GRANT EXECUTE ON Prc_InsertTransactionDetail TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertPageDetail
@LoadTestRunId int,
@PageDetailId int,
@TestDetailId int,
@TimeStamp datetime,
@PageId int,
@ResponseTime float,
@ResponseTimeGoal float,
@GoalExceeded bit
AS
INSERT INTO LoadTestPageDetail
(
LoadTestRunId,
PageDetailId,
TestDetailId,
TimeStamp,
PageId,
ResponseTime,
ResponseTimeGoal,
GoalExceeded
)
VALUES(
@LoadTestRunId,
@PageDetailId,
@TestDetailId,
@TimeStamp,
@PageId,
@ResponseTime,
@ResponseTimeGoal,
@GoalExceeded
)
GO
--GRANT EXECUTE ON Prc_InsertPageDetail TO PUBLIC
GO
CREATE PROCEDURE [Prc_InsertTransactionDetail2]
@LoadTestRunId int,
@TransactionDetailId int,
@TestDetailId int,
@TimeStamp datetime,
@EndTime datetime,
@TransactionId int,
@ElapsedTime float,
@InMeasurementInterval bit,
@ResponseTime float
AS
INSERT INTO LoadTestTransactionDetail
(
LoadTestRunId,
TransactionDetailId,
TestDetailId,
TimeStamp,
EndTime,
TransactionId,
ElapsedTime,
InMeasurementInterval,
ResponseTime
)
VALUES(
@LoadTestRunId,
@TransactionDetailId,
@TestDetailId,
@TimeStamp,
@EndTime,
@TransactionId,
@ElapsedTime,
@InMeasurementInterval,
@ResponseTime
)
GO
--GRANT EXECUTE ON Prc_InsertTransactionDetail2 TO PUBLIC
GO
CREATE PROCEDURE [Prc_InsertPageDetail2]
@LoadTestRunId int,
@PageDetailId int,
@TestDetailId int,
@TimeStamp datetime,
@EndTime datetime,
@PageId int,
@ResponseTime float,
@ResponseTimeGoal float,
@GoalExceeded bit,
@Outcome tinyint,
@InMeasurementInterval bit
AS
INSERT INTO LoadTestPageDetail
(
LoadTestRunId,
PageDetailId,
TestDetailId,
TimeStamp,
EndTime,
PageId,
ResponseTime,
ResponseTimeGoal,
GoalExceeded,
Outcome,
InMeasurementInterval
)
VALUES(
@LoadTestRunId,
@PageDetailId,
@TestDetailId,
@TimeStamp,
@EndTime,
@PageId,
@ResponseTime,
@ResponseTimeGoal,
@GoalExceeded,
@Outcome,
@InMeasurementInterval
)
GO
--GRANT EXECUTE ON Prc_InsertPageDetail2 TO PUBLIC
GO
CREATE PROCEDURE [Prc_InsertLoadTestMessageType]
@LoadTestRunId int,
@MessageTypeId int,
@MessageType tinyint,
@SubType nvarchar(64)
AS
INSERT INTO LoadTestMessageType
(
LoadTestRunId,
MessageTypeId,
MessageType,
SubType
)
VALUES(
@LoadTestRunId,
@MessageTypeId,
@MessageType,
@SubType
)
GO
--GRANT EXECUTE ON Prc_InsertLoadTestMessageType TO PUBLIC
GO
CREATE PROCEDURE [Prc_InsertLoadTestDetailMessage]
@LoadTestRunId int,
@LoadTestDetailMessageId int,
@TestDetailId int,
@PageDetailId int,
@MessageTypeId int
AS
INSERT INTO LoadTestDetailMessage
(
LoadTestRunId,
LoadTestDetailMessageId,
TestDetailId,
PageDetailId,
MessageTypeId
)
VALUES(
@LoadTestRunId,
@LoadTestDetailMessageId,
@TestDetailId,
@PageDetailId,
@MessageTypeId
)
GO
--GRANT EXECUTE ON Prc_InsertLoadTestDetailMessage TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertTestLog
@LoadTestRunId int,
@AgentId int,
@TestCaseId int,
@TestLogId int,
@TestLog image
AS
INSERT INTO LoadTestTestLog
(
LoadTestRunId,
AgentId,
TestCaseId,
TestLogId,
TestLog
)
VALUES(
@LoadTestRunId,
@AgentId,
@TestCaseId,
@TestLogId,
@TestLog
)
GO
--GRANT EXECUTE ON Prc_InsertTestLog TO PUBLIC
GO
CREATE PROCEDURE Prc_InsertFileAttachmentChunk
@LoadTestRunId int,
@FileAttachmentId int,
@StartOffset bigint,
@EndOffset bigint,
@ChunkLength bigint,
@ChunkBytes image
AS
INSERT INTO LoadTestFileAttachmentChunk
(
LoadTestRunId,
FileAttachmentId,
StartOffset,
EndOffset,
ChunkLength,
ChunkBytes
)
VALUES(
@LoadTestRunId,
@FileAttachmentId,
@StartOffset,
@EndOffset,
@ChunkLength,
@ChunkBytes
)
GO
--GRANT EXECUTE ON Prc_InsertFileAttachmentChunk TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateTestPercentiles @LoadTestRunId int, @TestCaseId int
AS
update LoadTestTestSummaryData set
Percentile90 =
(select min(ElapsedTime) from
(select top 10 percent ElapsedTime from LoadTestTestDetail
where LoadTestRunId = @LoadTestRunId and TestCaseId=@TestCaseId
order by ElapsedTime desc) as TopElapsedTimes),
Percentile95 =
(select min(ElapsedTime) from
(select top 5 percent ElapsedTime from LoadTestTestDetail
where LoadTestRunId = @LoadTestRunId and TestCaseId=@TestCaseId
order by ElapsedTime desc) as TopElapsedTimes)
where LoadTestRunId = @LoadTestRunId and TestCaseId=@TestCaseId
GO
--GRANT EXECUTE ON Prc_UpdateTestPercentiles TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateTestSummary @LoadTestRunId int, @TestCaseId int
AS
UPDATE LoadTestTestSummaryData set
Percentile90 =
(SELECT MIN(ElapsedTime)
FROM
(SELECT TOP 10 percent ElapsedTime FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TestCaseId=@TestCaseId
AND InMeasurementInterval = 1
ORDER BY ElapsedTime desc) AS TopElapsedTimes),
Percentile95 =
(SELECT MIN(ElapsedTime)
FROM
(SELECT TOP 5 percent ElapsedTime FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TestCaseId=@TestCaseId
AND InMeasurementInterval = 1
ORDER BY ElapsedTime DESC) AS TopElapsedTimes),
Percentile99 =
(SELECT MIN(ElapsedTime)
FROM
(SELECT TOP 1 percent ElapsedTime FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TestCaseId=@TestCaseId
AND InMeasurementInterval = 1
ORDER BY ElapsedTime DESC) AS TopElapsedTimes),
Median =
(SELECT MIN(ElapsedTime)
FROM
(SELECT TOP 50 PERCENT ElapsedTime FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TestCaseId=@TestCaseId
AND InMeasurementInterval = 1
ORDER BY ElapsedTime DESC) AS TopElapsedTimes)
WHERE LoadTestRunId = @LoadTestRunId
AND TestCaseId=@TestCaseId
GO
--GRANT EXECUTE ON Prc_UpdateTestSummary TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateTestSummary4] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedTestDetails'),0) <> 0 DROP TABLE #numberedTestDetails
SELECT * INTO #numberedTestDetails FROM
(
SELECT ElapsedTime, LoadTestRunId, TestCaseId,
PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY ElapsedTime)
OVER (PARTITION BY LoadTestRunId,TestCaseId) As perc90,
PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY ElapsedTime)
OVER (PARTITION BY LoadTestRunId,TestCaseId) As perc95,
PERCENTILE_CONT(0.99) WITHIN GROUP(ORDER BY ElapsedTime)
OVER (PARTITION BY LoadTestRunId,TestCaseId) As perc99,
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY ElapsedTime)
OVER (PARTITION BY LoadTestRunId,TestCaseId) As perc50
FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
UPDATE LoadTestTestSummaryData
SET Percentile90 = perc90
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
UPDATE LoadTestTestSummaryData
SET Percentile95 = perc95
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
UPDATE LoadTestTestSummaryData
SET Percentile99 = perc99
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
UPDATE LoadTestTestSummaryData
SET Median = perc50
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
DROP TABLE #numberedTestDetails
GO
--GRANT EXECUTE ON [Prc_UpdateTestSummary4] TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateTestSummary3] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedTestDetails'),0) <> 0 DROP TABLE #numberedTestDetails
SELECT * INTO #numberedTestDetails FROM
(
SELECT ElapsedTime, LoadTestRunId, TestCaseId,
rowNumber=ROW_NUMBER()
OVER (PARTITION BY LoadTestRunId, TestCaseId
ORDER BY ElapsedTime DESC),
COUNT(*)
OVER (PARTITION BY LoadTestRunId, TestCaseId) AS rCount
FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
WHERE allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 100) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 20) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 10) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 2)
UPDATE LoadTestTestSummaryData
SET Percentile90 = ElapsedTime
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
WHERE #numberedTestDetails.rowNumber = ceiling(CAST(#numberedTestDetails.rCount AS Float)/10)
UPDATE LoadTestTestSummaryData
SET Percentile95 = ElapsedTime
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
WHERE #numberedTestDetails.rowNumber = ceiling(CAST(#numberedTestDetails.rCount AS Float)/20)
UPDATE LoadTestTestSummaryData
SET Percentile99 = ElapsedTime
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
WHERE #numberedTestDetails.rowNumber = ceiling(CAST(#numberedTestDetails.rCount AS Float)/100)
UPDATE LoadTestTestSummaryData
SET Median = ElapsedTime
FROM LoadTestTestSummaryData JOIN #numberedTestDetails ON
LoadTestTestSummaryData.LoadTestRunId = #numberedTestDetails.LoadTestRunId AND
LoadTestTestSummaryData.TestCaseId = #numberedTestDetails.TestCaseId
WHERE #numberedTestDetails.rowNumber = ceiling(CAST(#numberedTestDetails.rCount AS Float)/2)
DROP TABLE #numberedTestDetails
GO
--GRANT EXECUTE ON [Prc_UpdateTestSummary3] TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateTransactionPercentiles @LoadTestRunId int, @TransactionId int
AS
update LoadTestTransactionSummaryData set
Percentile90 =
(select min(ElapsedTime) from
(select top 10 percent ElapsedTime from LoadTestTransactionDetail
where LoadTestRunId = @LoadTestRunId and TransactionId=@TransactionId
order by ElapsedTime desc) as TopElapsedTimes),
Percentile95 =
(select min(ElapsedTime) from
(select top 5 percent ElapsedTime from LoadTestTransactionDetail
where LoadTestRunId = @LoadTestRunId and TransactionId=@TransactionId
order by ElapsedTime desc) as TopElapsedTimes)
where LoadTestRunId = @LoadTestRunId and TransactionId=@TransactionId
GO
--GRANT EXECUTE ON Prc_UpdateTransactionPercentiles TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateTransactionSummary @LoadTestRunId int, @TransactionId int
AS
UPDATE LoadTestTransactionSummaryData
SET
Percentile90 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 10 percent ResponseTime
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TransactionId=@TransactionId
AND InMeasurementInterval = 1
ORDER BY ResponseTime desc) as TopResponseTimes),
Percentile95 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 5 percent ResponseTime
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TransactionId=@TransactionId
AND InMeasurementInterval = 1
ORDER BY ResponseTime desc) AS TopResponseTimes),
Percentile99 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 1 percent ResponseTime
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TransactionId=@TransactionId
AND InMeasurementInterval = 1
ORDER BY ResponseTime desc) AS TopResponseTimes),
Median =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 50 PERCENT ResponseTime
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId
AND TransactionId=@TransactionId
AND InMeasurementInterval = 1
ORDER BY ResponseTime DESC) AS TopResponseTimes)
WHERE LoadTestRunId = @LoadTestRunId
AND TransactionId=@TransactionId
GO
--GRANT EXECUTE ON Prc_UpdateTransactionSummary TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateTransactionSummary4] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedTransactionDetails'),0) <> 0 DROP TABLE #numberedTransactionDetails
SELECT * INTO #numberedTransactionDetails FROM
(
SELECT ResponseTime, LoadTestRunId, TransactionId,
PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,TransactionId) As perc90,
PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,TransactionId) As perc95,
PERCENTILE_CONT(0.99) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,TransactionId) As perc99,
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,TransactionId) As perc50
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
UPDATE LoadTestTransactionSummaryData
SET Percentile90 = perc90
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
UPDATE LoadTestTransactionSummaryData
SET Percentile95 = perc95
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
UPDATE LoadTestTransactionSummaryData
SET Percentile99 = perc99
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
UPDATE LoadTestTransactionSummaryData
SET Median = perc50
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
DROP TABLE #numberedTransactionDetails
GO
--GRANT EXECUTE ON [Prc_UpdateTransactionSummary4] TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateTransactionSummary3] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedTransactionDetails'),0) <> 0 DROP TABLE #numberedTransactionDetails
SELECT * INTO #numberedTransactionDetails FROM
(
SELECT ResponseTime, LoadTestRunId, TransactionId,
rowNumber=ROW_NUMBER()
OVER (PARTITION BY LoadTestRunId, TransactionId
ORDER BY ResponseTime DESC),
COUNT(*)
OVER (PARTITION BY LoadTestRunId, TransactionId) AS rCount
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
WHERE allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 100) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 20) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 10) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 2)
UPDATE LoadTestTransactionSummaryData
SET Percentile90 = ResponseTime
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
WHERE #numberedTransactionDetails.rowNumber = ceiling(CAST(#numberedTransactionDetails.rCount AS Float)/10)
UPDATE LoadTestTransactionSummaryData
SET Percentile95 = ResponseTime
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
WHERE #numberedTransactionDetails.rowNumber = ceiling(CAST(#numberedTransactionDetails.rCount AS Float)/20)
UPDATE LoadTestTransactionSummaryData
SET Percentile99 = ResponseTime
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
WHERE #numberedTransactionDetails.rowNumber = ceiling(CAST(#numberedTransactionDetails.rCount AS Float)/100)
UPDATE LoadTestTransactionSummaryData
SET Median = ResponseTime
FROM LoadTestTransactionSummaryData JOIN #numberedTransactionDetails ON
LoadTestTransactionSummaryData.LoadTestRunId = #numberedTransactionDetails.LoadTestRunId AND
LoadTestTransactionSummaryData.TransactionId = #numberedTransactionDetails.TransactionId
WHERE #numberedTransactionDetails.rowNumber = ceiling(CAST(#numberedTransactionDetails.rCount AS Float)/2)
DROP TABLE #numberedTransactionDetails
GO
--GRANT EXECUTE ON [Prc_UpdateTransactionSummary3] TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdatePagePercentiles @LoadTestRunId int, @PageId int
AS
update LoadTestPageSummaryData set
Percentile90 =
(select min(ResponseTime) from
(select top 10 percent ResponseTime from LoadTestPageDetail
where LoadTestRunId = @LoadTestRunId and PageId=@PageId
order by ResponseTime desc) as TopResponseTimes),
Percentile95 =
(select min(ResponseTime) from
(select top 5 percent ResponseTime from LoadTestPageDetail
where LoadTestRunId = @LoadTestRunId and PageId=@PageId
order by ResponseTime desc) as TopResponseTimes)
where LoadTestRunId = @LoadTestRunId and PageId=@PageId
GO
--GRANT EXECUTE ON Prc_UpdatePagePercentiles TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdatePageSummary @LoadTestRunId int, @PageId int
AS
UPDATE LoadTestPageSummaryData
SET
Percentile90 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 10 PERCENT ResponseTime
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId
AND PageId=@PageId
AND InMeasurementInterval = 1
ORDER BY ResponseTime DESC) AS TopResponseTimes),
Percentile95 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 5 percent ResponseTime
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId
AND PageId=@PageId
AND InMeasurementInterval = 1
ORDER BY ResponseTime DESC) AS TopResponseTimes),
Percentile99 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 1 percent ResponseTime
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId
AND PageId=@PageId
AND InMeasurementInterval = 1
ORDER BY ResponseTime DESC) AS TopResponseTimes),
Median =
(SELECT MIN(ResponseTime) FROM
(SELECT TOP 50 PERCENT ResponseTime FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId
AND PageId=@PageId
AND InMeasurementInterval = 1
ORDER BY ResponseTime DESC) AS TopResponseTimes)
WHERE LoadTestRunId = @LoadTestRunId
AND PageId=@PageId
GO
--GRANT EXECUTE ON Prc_UpdatePageSummary TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdatePageSummary4] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedPageDetails'),0) <> 0 DROP TABLE #numberedPageDetails
SELECT * INTO #numberedPageDetails FROM
(
SELECT ResponseTime, LoadTestRunId, PageId,
PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,PageId) As perc90,
PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,PageId) As perc95,
PERCENTILE_CONT(0.99) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,PageId) As perc99,
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY ResponseTime)
OVER (PARTITION BY LoadTestRunId,PageId) As perc50
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
UPDATE LoadTestPageSummaryData
SET Percentile90 = perc90
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
UPDATE LoadTestPageSummaryData
SET Percentile95 = perc95
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
UPDATE LoadTestPageSummaryData
SET Percentile99 = perc99
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
UPDATE LoadTestPageSummaryData
SET Median = perc50
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
DROP TABLE #numberedPageDetails
GO
--GRANT EXECUTE ON [Prc_UpdatePageSummary4] TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdatePageSummary3] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedPageDetails'),0) <> 0 DROP TABLE #numberedPageDetails
SELECT * INTO #numberedPageDetails FROM
(
SELECT ResponseTime, LoadTestRunId, PageId,
rowNumber=ROW_NUMBER()
OVER (PARTITION BY LoadTestRunId, PageId
ORDER BY ResponseTime DESC),
COUNT(*)
OVER (PARTITION BY LoadTestRunId, PageId) AS rCount
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId AND
InMeasurementInterval = 1) AS allRows
WHERE allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 100) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 20) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 10) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 2)
UPDATE LoadTestPageSummaryData
SET Percentile90 = ResponseTime
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
WHERE #numberedPageDetails.rowNumber = ceiling(CAST(#numberedPageDetails.rCount AS Float)/10)
UPDATE LoadTestPageSummaryData
SET Percentile95 = ResponseTime
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
WHERE #numberedPageDetails.rowNumber = ceiling(CAST(#numberedPageDetails.rCount AS Float)/20)
UPDATE LoadTestPageSummaryData
SET Percentile99 = ResponseTime
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
WHERE #numberedPageDetails.rowNumber = ceiling(CAST(#numberedPageDetails.rCount AS Float)/100)
UPDATE LoadTestPageSummaryData
SET Median = ResponseTime
FROM LoadTestPageSummaryData JOIN #numberedPageDetails ON
LoadTestPageSummaryData.LoadTestRunId = #numberedPageDetails.LoadTestRunId AND
LoadTestPageSummaryData.PageId = #numberedPageDetails.PageId
WHERE #numberedPageDetails.rowNumber = ceiling(CAST(#numberedPageDetails.rCount AS Float)/2)
DROP TABLE #numberedPageDetails
GO
--GRANT EXECUTE ON [Prc_UpdatePageSummary3] TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdatePageByNetworkPercentiles @LoadTestRunId int, @PageId int, @NetworkId int
AS
update LoadTestPageSummaryByNetwork set
Percentile90 =
(select min(ResponseTime) from
(select top 10 percent pageDetail.ResponseTime
from LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
where pageDetail.LoadTestRunId = @LoadTestRunId and
pageDetail.PageId=@PageId and
testDetail.NetworkId=@NetworkId
order by pageDetail.ResponseTime desc) as TopResponseTimes),
Percentile95 =
(select min(ResponseTime) from
(select top 5 percent pageDetail.ResponseTime
from LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
where pageDetail.LoadTestRunId = @LoadTestRunId and
pageDetail.PageId=@PageId and
testDetail.NetworkId=@NetworkId
order by pageDetail.ResponseTime desc) as TopResponseTimes),
PagesMeetingGoal =
(select count(*)
from LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
where pageDetail.LoadTestRunId = @LoadTestRunId and
pageDetail.PageId=@PageId and
testDetail.NetworkId=@NetworkId and
pageDetail.GoalExceeded = 0)
where LoadTestRunId=@LoadTestRunId and PageId=@PageId and NetworkId=@NetworkId
GO
--GRANT EXECUTE ON Prc_UpdatePageByNetworkPercentiles TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdatePageSummaryByNetwork @LoadTestRunId int, @PageId int, @NetworkId int
AS
UPDATE LoadTestPageSummaryByNetwork
SET
Percentile90 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 10 percent pageDetail.ResponseTime
FROM LoadTestPageDetail AS pageDetail
JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
where pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.PageId=@PageId
AND testDetail.NetworkId=@NetworkId
AND pageDetail.InMeasurementInterval = 1
ORDER BY pageDetail.ResponseTime DESC) AS TopResponseTimes),
Percentile95 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 5 percent pageDetail.ResponseTime
FROM LoadTestPageDetail AS pageDetail
JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.PageId=@PageId
AND testDetail.NetworkId=@NetworkId
AND pageDetail.InMeasurementInterval = 1
ORDER BY pageDetail.ResponseTime DESC) AS TopResponseTimes),
Percentile99 =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 1 percent pageDetail.ResponseTime
FROM LoadTestPageDetail AS pageDetail
JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.PageId=@PageId
AND testDetail.NetworkId=@NetworkId
AND pageDetail.InMeasurementInterval = 1
ORDER BY pageDetail.ResponseTime DESC) AS TopResponseTimes),
Median =
(SELECT MIN(ResponseTime)
FROM
(SELECT TOP 50 percent pageDetail.ResponseTime
FROM LoadTestPageDetail AS pageDetail
JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.PageId=@PageId
AND testDetail.NetworkId=@NetworkId
AND pageDetail.InMeasurementInterval = 1
ORDER BY pageDetail.ResponseTime DESC) AS TopResponseTimes),
PagesMeetingGoal =
(SELECT count(*)
FROM LoadTestPageDetail AS pageDetail
JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.PageId=@PageId
AND testDetail.NetworkId=@NetworkId
AND pageDetail.GoalExceeded = 0
AND pageDetail.InMeasurementInterval = 1)
WHERE LoadTestRunId=@LoadTestRunId
AND PageId=@PageId
AND NetworkId=@NetworkId
GO
--GRANT EXECUTE ON Prc_UpdatePageSummaryByNetwork TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdatePageSummaryByNetwork4] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedPageAndTestDetails'),0) <> 0 DROP TABLE #numberedPageAndTestDetails
SELECT * INTO #numberedPageAndTestDetails FROM
(
SELECT pageDetail.ResponseTime As ResponseTime, pageDetail.LoadTestRunId, testDetail.TestCaseId As TestCaseId,
pageDetail.PageId, testDetail.NetworkId,
PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY pageDetail.ResponseTime)
OVER (PARTITION BY pageDetail.LoadTestRunId,pageDetail.PageId,testDetail.TestCaseId) As perc90,
PERCENTILE_CONT(0.95) WITHIN GROUP(ORDER BY pageDetail.ResponseTime)
OVER (PARTITION BY pageDetail.LoadTestRunId,pageDetail.PageId,testDetail.TestCaseId) As perc95,
PERCENTILE_CONT(0.99) WITHIN GROUP(ORDER BY pageDetail.ResponseTime)
OVER (PARTITION BY pageDetail.LoadTestRunId,pageDetail.PageId,testDetail.TestCaseId) As perc99,
PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY pageDetail.ResponseTime)
OVER (PARTITION BY pageDetail.LoadTestRunId,pageDetail.PageId,testDetail.TestCaseId) As perc50,
SUM(CASE WHEN GoalExceeded=0 THEN 1 ELSE 0 END)
OVER (PARTITION BY pageDetail.LoadTestRunId, pageDetail.PageId,
testDetail.NetworkId) AS pagesMeetingGoal
FROM LoadTestPageDetail AS pageDetail JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId AND
pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId AND
pageDetail.InMeasurementInterval = 1) AS allRows
UPDATE LoadTestPageSummaryByNetwork
SET Percentile90 = perc90
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
UPDATE LoadTestPageSummaryByNetwork
SET Percentile95 = perc95
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
UPDATE LoadTestPageSummaryByNetwork
SET Percentile99 = perc99
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
UPDATE LoadTestPageSummaryByNetwork
SET Median = perc50
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
UPDATE LoadTestPageSummaryByNetwork
SET PagesMeetingGoal = results.pagesMeetingGoal
FROM
(SELECT LoadTestRunId, PageId, NetworkId, pagesMeetingGoal FROM #numberedPageAndTestDetails
GROUP BY LoadTestRunId, PageId, NetworkId, pagesMeetingGoal) AS results
JOIN LoadTestPageSummaryByNetwork
ON LoadTestPageSummaryByNetwork.LoadTestRunId = results.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = results.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = results.NetworkId
DROP TABLE #numberedPageAndTestDetails
GO
--GRANT EXECUTE ON [Prc_UpdatePageSummaryByNetwork4] TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdatePageSummaryByNetwork3] @LoadTestRunId int
AS
If IsNull(object_id('tempdb..#numberedPageAndTestDetails'),0) <> 0 DROP TABLE #numberedPageAndTestDetails
SELECT * INTO #numberedPageAndTestDetails FROM
(
SELECT pageDetail.ResponseTime, pageDetail.LoadTestRunId, testDetail.TestCaseId,
pageDetail.PageId, testDetail.NetworkId,
rowNumber=ROW_NUMBER()
OVER (PARTITION BY pageDetail.LoadTestRunId, pageDetail.PageId ,
testDetail.NetworkId ORDER BY pageDetail.ResponseTime DESC),
COUNT(*)
OVER (PARTITION BY pageDetail.LoadTestRunId, pageDetail.PageId,
testDetail.NetworkId) AS rCount,
SUM(CASE WHEN GoalExceeded=0 THEN 1 ELSE 0 END)
OVER (PARTITION BY pageDetail.LoadTestRunId, pageDetail.PageId,
testDetail.NetworkId) AS pagesMeetingGoal
FROM LoadTestPageDetail AS pageDetail JOIN LoadTestTestDetail AS testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId AND
pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId AND
pageDetail.InMeasurementInterval = 1) AS allRows
WHERE allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 100) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 20) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 10) OR
allRows.rowNumber = ceiling(CAST(allRows.rCount AS Float) / 2)
UPDATE LoadTestPageSummaryByNetwork
SET Percentile90 = ResponseTime
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
WHERE #numberedPageAndTestDetails.rowNumber = ceiling(CAST(#numberedPageAndTestDetails.rCount AS Float)/10)
UPDATE LoadTestPageSummaryByNetwork
SET Percentile95 = ResponseTime
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
WHERE #numberedPageAndTestDetails.rowNumber = ceiling(CAST(#numberedPageAndTestDetails.rCount AS Float)/20)
UPDATE LoadTestPageSummaryByNetwork
SET Percentile99 = ResponseTime
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
WHERE #numberedPageAndTestDetails.rowNumber = ceiling(CAST(#numberedPageAndTestDetails.rCount AS Float)/100)
UPDATE LoadTestPageSummaryByNetwork
SET Median = ResponseTime
FROM LoadTestPageSummaryByNetwork JOIN #numberedPageAndTestDetails ON
LoadTestPageSummaryByNetwork.LoadTestRunId = #numberedPageAndTestDetails.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = #numberedPageAndTestDetails.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = #numberedPageAndTestDetails.NetworkId
WHERE #numberedPageAndTestDetails.rowNumber = ceiling(CAST(#numberedPageAndTestDetails.rCount AS Float)/2)
UPDATE LoadTestPageSummaryByNetwork
SET PagesMeetingGoal = results.pagesMeetingGoal
FROM
(SELECT LoadTestRunId, PageId, NetworkId, pagesMeetingGoal FROM #numberedPageAndTestDetails
GROUP BY LoadTestRunId, PageId, NetworkId, pagesMeetingGoal) AS results
JOIN LoadTestPageSummaryByNetwork
ON LoadTestPageSummaryByNetwork.LoadTestRunId = results.LoadTestRunId AND
LoadTestPageSummaryByNetwork.PageId = results.PageId AND
LoadTestPageSummaryByNetwork.NetworkId = results.NetworkId
DROP TABLE #numberedPageAndTestDetails
GO
--GRANT EXECUTE ON [Prc_UpdatePageSummaryByNetwork3] TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateSummaryData @LoadTestRunId int, @DeleteDetailTables bit
AS
BEGIN
INSERT INTO LoadTestTestSummaryData
(LoadTestRunId, TestCaseId, TestsRun, Average, Minimum, Maximum)
SELECT LoadTestRunId, TestCaseId,
count(*) as TestsRun,
avg(ElapsedTime) as Average,
min(ElapsedTime) as Minimum,
max(ElapsedTime) as Maximum
FROM LoadTestTestDetail where LoadTestRunId=@LoadTestRunId
GROUP BY LoadTestRunId, TestCaseId
DECLARE @TestCaseId int
DECLARE TestCaseCursor CURSOR FOR
SELECT DISTINCT(TestCaseId) FROM LoadTestTestDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN TestCaseCursor
FETCH NEXT FROM TestCaseCursor INTO @TestCaseId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdateTestPercentiles @LoadTestRunId, @TestCaseId
FETCH NEXT FROM TestCaseCursor INTO @TestCaseId
END
CLOSE TestCaseCursor
DEALLOCATE TestCaseCursor
INSERT INTO LoadTestTransactionSummaryData
(LoadTestRunId, TransactionId, TransactionCount, Average, Minimum, Maximum)
SELECT LoadTestRunId, TransactionId,
count(*) as TransactionCount,
avg(ElapsedTime) as Average,
min(ElapsedTime) as Minimum,
max(ElapsedTime) as Maximum
FROM LoadTestTransactionDetail where LoadTestRunId=@LoadTestRunId
GROUP BY LoadTestRunId, TransactionId
DECLARE @TransactionId int
DECLARE TransactionIdCursor CURSOR FOR
SELECT DISTINCT(TransactionId) FROM LoadTestTransactionDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN TransactionIdCursor
FETCH NEXT FROM TransactionIdCursor INTO @TransactionId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdateTransactionPercentiles @LoadTestRunId, @TransactionId
FETCH NEXT FROM TransactionIdCursor INTO @TransactionId
END
CLOSE TransactionIdCursor
DEALLOCATE TransactionIdCursor
INSERT INTO LoadTestPageSummaryData
(LoadTestRunId, PageId, PageCount, Average, Minimum, Maximum)
SELECT LoadTestRunId, PageId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum
FROM LoadTestPageDetail where LoadTestRunId=@LoadTestRunId
GROUP BY LoadTestRunId, PageId
DECLARE @PageId int
DECLARE PageIdCursor CURSOR FOR
SELECT DISTINCT(PageId) FROM LoadTestPageDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN PageIdCursor
FETCH NEXT FROM PageIdCursor INTO @PageId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdatePagePercentiles @LoadTestRunId, @PageId
FETCH NEXT FROM PageIdCursor INTO @PageId
END
CLOSE PageIdCursor
DEALLOCATE PageIdCursor
INSERT INTO LoadTestPageSummaryByNetwork
(LoadTestRunId, PageId, NetworkId, PageCount, Average, Minimum, Maximum, Goal)
SELECT pageDetail.LoadTestRunId, pageDetail.PageId, testDetail.NetworkId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ResponseTimeGoal) as Goal
FROM LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
GROUP BY pageDetail.LoadTestRunId, PageId, testDetail.NetworkId
DECLARE @NetworkId int
DECLARE PageNetworkCursor CURSOR FOR
SELECT PageId, NetworkId from LoadTestPageSummaryByNetwork WHERE LoadTestRunId = @LoadTestRunId
OPEN PageNetworkCursor
FETCH NEXT FROM PageNetworkCursor INTO @PageId, @NetworkId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdatePageByNetworkPercentiles @LoadTestRunId, @PageId, @NetworkId
FETCH NEXT FROM PageNetworkCursor INTO @PageId, @NetworkId
END
CLOSE PageNetworkCursor
DEALLOCATE PageNetworkCursor
IF @DeleteDetailTables = 1
BEGIN
DELETE from LoadTestTestDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestTransactionDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestPageDetail where LoadTestRunId = @LoadTestRunId
END
END
GO
--GRANT EXECUTE ON Prc_UpdateSummaryData TO PUBLIC
GO
CREATE PROCEDURE Prc_UpdateSummaryData2 @LoadTestRunId int, @DeleteDetailTables bit
AS
BEGIN
INSERT INTO LoadTestTestSummaryData
(LoadTestRunId, TestCaseId, TestsRun, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, TestCaseId,
count(*) as TestsRun,
avg(ElapsedTime) as Average,
min(ElapsedTime) as Minimum,
max(ElapsedTime) as Maximum,
ISNULL(STDEVP(ElapsedTime),0) AS StandardDeviation
FROM LoadTestTestDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TestCaseId
DECLARE @TestCaseId int
DECLARE TestCaseCursor CURSOR FOR
SELECT DISTINCT(TestCaseId) FROM LoadTestTestDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN TestCaseCursor
FETCH NEXT FROM TestCaseCursor INTO @TestCaseId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdateTestSummary @LoadTestRunId, @TestCaseId
FETCH NEXT FROM TestCaseCursor INTO @TestCaseId
END
CLOSE TestCaseCursor
DEALLOCATE TestCaseCursor
INSERT INTO LoadTestTransactionSummaryData
(LoadTestRunId, TransactionId, TransactionCount, Average, Minimum, Maximum,AvgTransactionTime, StandardDeviation)
SELECT LoadTestRunId, TransactionId,
count(*) as TransactionCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ElapsedTime) as AverageTransactionTime,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestTransactionDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TransactionId
DECLARE @TransactionId int
DECLARE TransactionIdCursor CURSOR FOR
SELECT DISTINCT(TransactionId) FROM LoadTestTransactionDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN TransactionIdCursor
FETCH NEXT FROM TransactionIdCursor INTO @TransactionId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdateTransactionSummary @LoadTestRunId, @TransactionId
FETCH NEXT FROM TransactionIdCursor INTO @TransactionId
END
CLOSE TransactionIdCursor
DEALLOCATE TransactionIdCursor
INSERT INTO LoadTestPageSummaryData
(LoadTestRunId, PageId, PageCount, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, PageId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, PageId
DECLARE @PageId int
DECLARE PageIdCursor CURSOR FOR
SELECT DISTINCT(PageId) FROM LoadTestPageDetail WHERE LoadTestRunId = @LoadTestRunId
OPEN PageIdCursor
FETCH NEXT FROM PageIdCursor INTO @PageId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdatePageSummary @LoadTestRunId, @PageId
FETCH NEXT FROM PageIdCursor INTO @PageId
END
CLOSE PageIdCursor
DEALLOCATE PageIdCursor
INSERT INTO LoadTestPageSummaryByNetwork
(LoadTestRunId, PageId, NetworkId, PageCount, Average, Minimum, Maximum, Goal, StandardDeviation)
SELECT pageDetail.LoadTestRunId, pageDetail.PageId, testDetail.NetworkId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ResponseTimeGoal) as Goal,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.InMeasurementInterval = 1
GROUP BY pageDetail.LoadTestRunId, PageId, testDetail.NetworkId
DECLARE @NetworkId int
DECLARE PageNetworkCursor CURSOR FOR
SELECT PageId, NetworkId from LoadTestPageSummaryByNetwork WHERE LoadTestRunId = @LoadTestRunId
OPEN PageNetworkCursor
FETCH NEXT FROM PageNetworkCursor INTO @PageId, @NetworkId
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC Prc_UpdatePageSummaryByNetwork @LoadTestRunId, @PageId, @NetworkId
FETCH NEXT FROM PageNetworkCursor INTO @PageId, @NetworkId
END
CLOSE PageNetworkCursor
DEALLOCATE PageNetworkCursor
IF @DeleteDetailTables = 1
BEGIN
DELETE from LoadTestTestDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestTransactionDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestPageDetail where LoadTestRunId = @LoadTestRunId
END
END
GO
--GRANT EXECUTE ON Prc_UpdateSummaryData2 TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateSummaryData4] @LoadTestRunId int, @DeleteDetailTables bit
AS
BEGIN
INSERT INTO LoadTestTestSummaryData
(LoadTestRunId, TestCaseId, TestsRun, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, TestCaseId,
count(*) as TestsRun,
avg(ElapsedTime) as Average,
min(ElapsedTime) as Minimum,
max(ElapsedTime) as Maximum,
ISNULL(STDEVP(ElapsedTime),0) AS StandardDeviation
FROM LoadTestTestDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TestCaseId
EXEC Prc_UpdateTestSummary4 @LoadTestRunId
INSERT INTO LoadTestTransactionSummaryData
(LoadTestRunId, TransactionId, TransactionCount, Average, Minimum, Maximum,AvgTransactionTime, StandardDeviation)
SELECT LoadTestRunId, TransactionId,
count(*) as TransactionCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ElapsedTime) as AverageTransactionTime,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestTransactionDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TransactionId
EXEC Prc_UpdateTransactionSummary4 @LoadTestRunId
INSERT INTO LoadTestPageSummaryData
(LoadTestRunId, PageId, PageCount, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, PageId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, PageId
EXEC Prc_UpdatePageSummary4 @LoadTestRunId
INSERT INTO LoadTestPageSummaryByNetwork
(LoadTestRunId, PageId, NetworkId, PageCount, Average, Minimum, Maximum, Goal, StandardDeviation)
SELECT pageDetail.LoadTestRunId, pageDetail.PageId, testDetail.NetworkId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ResponseTimeGoal) as Goal,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.InMeasurementInterval = 1
GROUP BY pageDetail.LoadTestRunId, PageId, testDetail.NetworkId
EXEC Prc_UpdatePageSummaryByNetwork4 @LoadTestRunId
IF @DeleteDetailTables = 1
BEGIN
DELETE from LoadTestTestDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestTransactionDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestPageDetail where LoadTestRunId = @LoadTestRunId
END
END
GO
--GRANT EXECUTE ON [Prc_UpdateSummaryData4] TO PUBLIC
GO
CREATE PROCEDURE [Prc_UpdateSummaryData3] @LoadTestRunId int, @DeleteDetailTables bit
AS
BEGIN
INSERT INTO LoadTestTestSummaryData
(LoadTestRunId, TestCaseId, TestsRun, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, TestCaseId,
count(*) as TestsRun,
avg(ElapsedTime) as Average,
min(ElapsedTime) as Minimum,
max(ElapsedTime) as Maximum,
ISNULL(STDEVP(ElapsedTime),0) AS StandardDeviation
FROM LoadTestTestDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TestCaseId
EXEC Prc_UpdateTestSummary3 @LoadTestRunId
INSERT INTO LoadTestTransactionSummaryData
(LoadTestRunId, TransactionId, TransactionCount, Average, Minimum, Maximum,AvgTransactionTime, StandardDeviation)
SELECT LoadTestRunId, TransactionId,
count(*) as TransactionCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ElapsedTime) as AverageTransactionTime,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestTransactionDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, TransactionId
EXEC Prc_UpdateTransactionSummary3 @LoadTestRunId
INSERT INTO LoadTestPageSummaryData
(LoadTestRunId, PageId, PageCount, Average, Minimum, Maximum, StandardDeviation)
SELECT LoadTestRunId, PageId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail
WHERE LoadTestRunId=@LoadTestRunId
AND InMeasurementInterval = 1
GROUP BY LoadTestRunId, PageId
EXEC Prc_UpdatePageSummary3 @LoadTestRunId
INSERT INTO LoadTestPageSummaryByNetwork
(LoadTestRunId, PageId, NetworkId, PageCount, Average, Minimum, Maximum, Goal, StandardDeviation)
SELECT pageDetail.LoadTestRunId, pageDetail.PageId, testDetail.NetworkId,
count(*) as PageCount,
avg(ResponseTime) as Average,
min(ResponseTime) as Minimum,
max(ResponseTime) as Maximum,
avg(ResponseTimeGoal) as Goal,
ISNULL(STDEVP(ResponseTime),0) AS StandardDeviation
FROM LoadTestPageDetail as pageDetail
INNER JOIN LoadTestTestDetail as testDetail
ON pageDetail.LoadTestRunId = testDetail.LoadTestRunId
AND pageDetail.TestDetailId = testDetail.TestDetailId
WHERE pageDetail.LoadTestRunId = @LoadTestRunId
AND pageDetail.InMeasurementInterval = 1
GROUP BY pageDetail.LoadTestRunId, PageId, testDetail.NetworkId
EXEC Prc_UpdatePageSummaryByNetwork3 @LoadTestRunId
IF @DeleteDetailTables = 1
BEGIN
DELETE from LoadTestTestDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestTransactionDetail where LoadTestRunId = @LoadTestRunId
DELETE from LoadTestPageDetail where LoadTestRunId = @LoadTestRunId
END
END
GO
--GRANT EXECUTE ON [Prc_UpdateSummaryData3] TO PUBLIC
GO
CREATE PROCEDURE prc_--GRANTDBAccess
@dbUser SYSNAME
AS
-- Initialize the ProcedureName for error messages.
DECLARE @procedureName SYSNAME
SELECT @procedureName = @@SERVERNAME + '.' + db_name() + '..' + object_name(@@PROCID)
DECLARE @statement NVARCHAR(4000)
DECLARE @status INT
-- Warning: if @dbUser is null, QUOTENAME will return null, @statement will be null and sp_executesql will return success!
IF (@dbUser IS NULL)
BEGIN
RAISERROR (500001, 16, -1, @procedureName, 'username cannot be null')
RETURN 500001
END
-- First --GRANT the user the ability to login to SQL server if they don't already have it.
IF (SUSER_ID(@dbUser) IS NULL)
BEGIN
SELECT @statement = 'CREATE LOGIN '+ QUOTENAME(@dbUser) +' FROM WINDOWS'
EXEC @status = sp_executesql @statement
IF (@status <> 0)
BEGIN
RAISERROR (500001, 16, -1, @procedureName, 'Unable to create login for user')
RETURN @status
END
END
-- --GRANT the user access to this database if not already enabled
-- either by an explicit --GRANT or by being the database owner
IF NOT (
EXISTS (
SELECT name
FROM sysusers
WHERE name = @dbUser)
OR EXISTS (
SELECT sid
FROM master.dbo.sysdatabases
WHERE dbid = db_id()
AND sid = SUSER_SID(@dbUser)))
BEGIN
SELECT @statement = 'CREATE USER '+ QUOTENAME(@dbUser)
EXEC @status = sp_executesql @statement
IF (@status <> 0)
BEGIN
RAISERROR (500001, 16, -1, @procedureName, 'Unable to create database user')
RETURN @status
END
END
RETURN
GO
CREATE PROCEDURE [prc_CreateLoadTestReport]
@name NVARCHAR(255),
@reportType TINYINT,
@description NVARCHAR(MAX),
@loadTestName NVARCHAR(255),
@lastModifiedBy NVARCHAR(255),
@lastRunId INT,
@selectNewReports BIT,
@runsXml NVARCHAR(MAX),
@pageXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @status INT
DECLARE @reportId INT
DECLARE @docHandle INT
DECLARE @lastModified DATETIME
SET @lastModified = GETUTCDATE()
DECLARE @runs TABLE (
runId INT NOT NULL
)
DECLARE @pageInfo TABLE (
categoryName NVARCHAR(255) NOT NULL,
counterName NVARCHAR(255) NOT NULL
)
-- Initialize the ProcedureName for error messages.
DECLARE @procedureName SYSNAME
SELECT @procedureName = @@SERVERNAME + '.' + db_name() + '..' + object_name(@@PROCID)
BEGIN TRAN
INSERT LoadTestReport
(
Name,
ReportType,
Description,
LoadTestName,
LastRunId,
SelectNewRuns,
LastModified,
LastModifiedBy
)
VALUES (
@name,
@reportType,
@description,
@loadTestName,
@lastRunId,
@selectNewReports,
@lastModified,
@lastModifiedBy
)
SELECT @status = @@ERROR,
@reportId = SCOPE_IDENTITY()
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'LoadTestReport')
ROLLBACK TRAN
RETURN 560500
END
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @runsXml
INSERT @runs
SELECT i
FROM OPENXML(@docHandle, N'/runs/r', 0)
WITH (
i INT
)
SELECT @status = @@ERROR
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'@runs')
ROLLBACK TRAN
RETURN 560500
END
INSERT LoadTestReportRuns
SELECT @reportId,
runId
FROM @runs
SELECT @status = @@ERROR
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'LoadTestReportRuns')
ROLLBACK TRAN
RETURN 560500
END
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @pageXml
INSERT @pageInfo
SELECT c,
t
FROM OPENXML(@docHandle, N'/pages/p', 0)
WITH (
c NVARCHAR(255),
t NVARCHAR(255)
)
SELECT @status = @@ERROR
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'@pageInfo')
ROLLBACK TRAN
RETURN 560500
END
INSERT LoadTestReportPage
SELECT @reportId,
categoryName,
counterName
FROM @pageInfo
COMMIT TRAN
-- Return ID to caller
SELECT @reportId AS ReportId,
@lastModified as LastModified
-- Return Page Info
SELECT PageId,
ReportId,
CategoryName,
CounterName
FROM LoadTestReportPage
WHERE ReportId = @reportId
RETURN 0
GO
--GRANT EXECUTE ON prc_CreateLoadTestReport TO PUBLIC
GO
CREATE PROCEDURE [prc_UpdateLoadTestReport]
@reportId INT,
@description NVARCHAR(255),
@loadTestName NVARCHAR(255),
@lastModifiedBy NVARCHAR(255),
@lastRunId INT,
@selectNewReports BIT,
@runsXml NVARCHAR(MAX),
@pageXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @status INT
DECLARE @docHandle INT
DECLARE @lastModified DATETIME
SET @lastModified = GETUTCDATE()
DECLARE @runs TABLE (
runId INT NOT NULL
)
DECLARE @pageInfo TABLE (
pageId INT NOT NULL,
categoryName NVARCHAR(255) NOT NULL,
counterName NVARCHAR(255) NOT NULL
)
-- Initialize the ProcedureName for error messages.
DECLARE @procedureName SYSNAME
SELECT @procedureName = @@SERVERNAME + '.' + db_name() + '..' + object_name(@@PROCID)
BEGIN TRAN
UPDATE LoadTestReport
SET Description = @description,
LoadTestName = @loadTestName,
LastRunId = @lastRunId,
SelectNewRuns = @selectNewReports,
LastModifiedBy = @lastModifiedBy,
LastModified = @lastModified
WHERE ReportId = @reportId
SELECT @status = @@ERROR
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'UPDATE', N'LoadTestReport')
ROLLBACK TRAN
RETURN 560500
END
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @runsXml
INSERT @runs
SELECT i
FROM OPENXML(@docHandle, N'/runs/r', 0)
WITH (
i INT
)
SELECT @status = @@ERROR
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'@runs')
ROLLBACK TRAN
RETURN 560500
END
--first delete runs that no longer exist
DELETE LoadTestReportRuns
FROM LoadTestReportRuns ltr
LEFT JOIN @runs r
ON ltr.LoadTestRunId = r.runId
WHERE ltr.ReportId = @reportId
AND r.runId IS NULL
SELECT @status = @@ERROR
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'DELETE', N'LoadTestReportRuns')
ROLLBACK TRAN
RETURN 560500
END
--Now insert new runs
INSERT LoadTestReportRuns
SELECT @reportId,
runId
FROM @runs r
LEFT JOIN LoadTestReportRuns ltr
ON ltr.ReportId = @reportId
AND r.runId = ltr.LoadTestRunId
WHERE ltr.LoadTestRunId IS NULL
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @pageXml
INSERT @pageInfo
SELECT i,
c,
t
FROM OPENXML(@docHandle, N'/pages/p', 0)
WITH (
i INT,
c NVARCHAR(255),
t NVARCHAR(255)
)
SELECT @status = @@ERROR
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'@pageInfo')
ROLLBACK TRAN
RETURN 560500
END
--first delete reports that no longer exist
DELETE LoadTestReportPage
FROM LoadTestReportPage p
LEFT JOIN @pageInfo i
ON p.PageId = i.PageId
WHERE p.ReportId = @reportId
AND i.PageId IS NULL
INSERT LoadTestReportPage
SELECT @reportId,
i.categoryName,
i.counterName
FROM @pageInfo i
LEFT JOIN LoadTestReportPage p
ON p.ReportId = @reportId
AND p.PageId = i.PageId
WHERE p.PageId IS NULL
COMMIT TRAN
SELECT @lastModified as LastModified
-- Return Page Info
SELECT PageId,
ReportId,
CategoryName,
CounterName
FROM LoadTestReportPage
WHERE ReportId = @reportId
RETURN 0
GO
--GRANT EXECUTE ON prc_UpdateLoadTestReport TO PUBLIC
GO
CREATE PROCEDURE [prc_FindLoadTestReport]
@reportId INT,
@name NVARCHAR(255)
AS
SET NOCOUNT ON
IF (@reportId = -1)
BEGIN
SELECT @reportId = ReportId
FROM LoadTestReport
WHERE Name = @name
END
-- Return Report Info
SELECT Name,
ReportType,
Description,
LoadTestName,
LastRunId,
SelectNewRuns,
LastModified,
LastModifiedBy
FROM LoadTestReport
WHERE ReportId = @reportId
--return runs
SELECT LoadTestRunId
FROM LoadTestReportRuns
WHERE ReportId = @reportId
--return pages
SELECT PageId,
@reportId,
CategoryName,
CounterName
FROM LoadTestReportPage
WHERE ReportId = @reportId
GO
--GRANT EXECUTE ON prc_FindLoadTestReport TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryForInstanceCount]
@categoryName NVARCHAR(255),
@counterName NVARCHAR(255),
@runsxml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @docHandle INT
DECLARE @runs TABLE (
runId INT NOT NULL
)
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @runsxml
INSERT @runs
SELECT i
FROM OPENXML(@docHandle, N'/runs/r', 0)
WITH (
i INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
-- Return Runs Info
SELECT TOP 1 run.runId, count(*) as InstanceCount
FROM @runs as run
INNER JOIN LoadTestPerformanceCounterCategory AS category
ON run.runId = category.LoadTestRunId
INNER JOIN LoadTestPerformanceCounter AS counter
ON category.LoadTestRunId = counter.LoadTestRunId
AND category.CounterCategoryId = counter.CounterCategoryId
INNER JOIN LoadTestPerformanceCounterInstance AS instance
ON counter.CounterId = instance.CounterId
AND counter.LoadTestRunId = instance.LoadTestRunId
WHERE instance.cumulativeValue IS NOT NULL
AND counter.CounterName = @counterName
AND category.CategoryName = @categoryName
GROUP BY run.runId
ORDER BY InstanceCount DESC
--GRANT EXECUTE ON prc_QueryForInstanceCount TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryLoadTestReports]
AS
SET NOCOUNT ON
-- Return Report Info
SELECT ReportId,
ReportType,
Name,
LoadTestName,
Description,
SelectNewRuns,
LastModified,
LastModifiedBy
FROM LoadTestReport
WHERE Name != 'LOADTEST_RUNCOMPARISON_REPORT_DEFAULT'
AND Name != 'LOADTEST_TREND_REPORT_DEFAULT'
ORDER BY LastModified DESC
GO
--GRANT EXECUTE ON prc_QueryLoadTestReports TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryLoadTestRunsById]
@runsXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @status INT
DECLARE @docHandle INT
DECLARE @runs TABLE (
runId INT NOT NULL
)
-- Parse the XML input into a temporary table
-- Initialize the ProcedureName for error messages.
DECLARE @procedureName SYSNAME
SELECT @procedureName = @@SERVERNAME + '.' + db_name() + '..' + object_name(@@PROCID)
EXEC sp_xml_preparedocument @docHandle OUTPUT, @runsXml
INSERT @runs
SELECT i
FROM OPENXML(@docHandle, N'/runs/r', 0)
WITH (
i INT
)
SELECT @status = @@ERROR
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@status <> 0)
BEGIN
RAISERROR (560500, 16, -1, @procedureName, @status, N'INSERT', N'@runs')
ROLLBACK TRAN
RETURN 560500
END
-- Return Runs Info
SELECT LoadTestRunId,
ltr.RunId,
LoadTestName,
Description,
Comment,
IsLocalRun,
ControllerName,
StartTime,
EndTime,
WarmupTime,
RunDuration,
LoadTest,
Outcome,
LoadTestSchemaRev
FROM LoadTestRun ltr
JOIN @runs r
ON ltr.LoadTestRunId = r.runId
WHERE StartTime IS NOT NULL
AND EndTime IS NOT NULL
ORDER BY StartTime DESC
GO
--GRANT EXECUTE ON prc_QueryLoadTestRunsById TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryLoadTestRuns]
@loadTestName NVARCHAR(255)
AS
SET NOCOUNT ON
-- Return Runs Info
SELECT LoadTestRunId,
RunId,
LoadTestName,
Description,
Comment,
IsLocalRun,
ControllerName,
StartTime,
EndTime,
WarmupTime,
RunDuration,
LoadTest,
Outcome,
LoadTestSchemaRev
FROM LoadTestRun
WHERE LoadTestName = @loadTestName
AND StartTime IS NOT NULL
AND EndTime IS NOT NULL
ORDER BY StartTime DESC
GO
--GRANT EXECUTE ON prc_QueryLoadTestRuns TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetAvailableDetailTypes]
@LoadTestRunId INT
AS
SET NOCOUNT ON
DECLARE @TestDetailExists BIT
DECLARE @PageDetailExists BIT
DECLARE @TransactionDetailExists BIT
SET @TestDetailExists = 0
SET @PageDetailExists = 0
SET @TransactionDetailExists = 0
IF EXISTS
(
SELECT TOP 1 LoadTestRunId
FROM LoadTestPageDetail
WHERE LoadTestRunId = @LoadTestRunId
)
BEGIN
SET @PageDetailExists = 1
END
IF EXISTS
(
SELECT TOP 1 LoadTestRunId
FROM LoadTestTransactionDetail
WHERE LoadTestRunId = @LoadTestRunId
)
BEGIN
SET @TransactionDetailExists = 1
END
IF EXISTS
(
SELECT TOP 1 LoadTestRunId
FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
)
BEGIN
SET @TestDetailExists = 1
END
SELECT @TestDetailExists AS TestDetailsExists,
@PageDetailExists AS PageDetailExists,
@TransactionDetailExists AS TransactionDetailExists
GO
--GRANT EXECUTE ON Prc_GetAvailableDetailTypes TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetUserPageDetail]
@LoadTestRunId INT,
@StartTime DATETIME,
@EndTime DATETIME,
@FilterNoLog BIT,
@FilterSuccessfulResults BIT,
@ItemsXml NVARCHAR(MAX),
@ErrorsXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @docHandle INT
--parse the items
DECLARE @items TABLE (
Test INT NOT NULL,
Page INT NOT NULL
)
--parse the errors
DECLARE @errors TABLE (
ErrorId INT NOT NULL
)
-- Parse the XML input for items into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @ItemsXml
INSERT @items
SELECT t,p
FROM OPENXML(@docHandle, N'/items/i', 0)
WITH (
t INT,
p INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
-- Parse the XML input for errors into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @ErrorsXml
INSERT @errors
SELECT t
FROM OPENXML(@docHandle, N'/errors/i', 0)
WITH (
t INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF(@FilterSuccessfulResults=0)
BEGIN
--Select all pages active during that time span
SELECT UserId,
p.PageDetailId,
TestCaseName,
p.TimeStamp as StartTime,
p.EndTime,
ScenarioName,
p.Outcome,
detail.AgentId,
s.ScenarioId,
ResponseTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1),
PageId,
RequestUri,
BrowserName,
agent.AgentName
FROM LoadTestPageDetail p
JOIN LoadTestTestDetail detail
ON p.LoadTestRunId = detail.LoadTestRunId
AND p.TestDetailId= detail.TestDetailId
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN WebLoadTestRequestMap map
ON p.loadtestrunid = map.loadtestrunid
AND p.PageId = map.RequestId
JOIN @items i
ON i.Test = tc.TestCaseId
AND i.Page = map.RequestId
JOIN LoadTestDetailMessage dm
ON p.LoadTestRunId = dm.LoadTestRunId
AND p.TestDetailId = dm.TestDetailId
AND p.PageDetailId = dm.PageDetailId
JOIN @errors errors
ON dm.MessageTypeId = errors.ErrorId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
LEFT JOIN LoadTestBrowsers b
ON detail.LoadTestRunId = b.LoadTestRunId
AND detail.BrowserId = b.BrowserId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND p.EndTime > @StartTime
AND
(
(
p.TimeStamp >=@StartTime
AND p.TimeStamp <@EndTime
)
OR
(
p.TimeStamp < @StartTime
)
)
AND (
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
UNION
SELECT UserId,
PageDetailId,
TestCaseName,
p.TimeStamp as StartTime,
p.EndTime,
ScenarioName,
p.Outcome,
detail.AgentId,
s.ScenarioId,
ResponseTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1),
PageId,
RequestUri,
BrowserName,
agent.AgentName
FROM LoadTestPageDetail p
JOIN LoadTestTestDetail detail
ON p.LoadTestRunId = detail.LoadTestRunId
AND p.TestDetailId= detail.TestDetailId
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN WebLoadTestRequestMap map
ON p.loadtestrunid = map.loadtestrunid
AND p.PageId = map.RequestId
JOIN @items i
ON i.Test = tc.TestCaseId
AND i.Page = map.RequestId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
LEFT JOIN LoadTestBrowsers b
ON detail.LoadTestRunId = b.LoadTestRunId
AND detail.BrowserId = b.BrowserId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND p.EndTime > @StartTime
AND
(
(
p.TimeStamp >=@StartTime
AND p.TimeStamp <@EndTime
)
OR
(
p.TimeStamp < @StartTime
)
)
AND (
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
AND
(
p.Outcome = 0
)
ORDER BY s.ScenarioId,AgentId,UserId, PageDetailId
END
ELSE
BEGIN
SELECT UserId,
p.PageDetailId,
TestCaseName,
p.TimeStamp as StartTime,
p.EndTime,
ScenarioName,
p.Outcome,
detail.AgentId,
s.ScenarioId,
ResponseTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1),
PageId,
RequestUri,
BrowserName,
agent.AgentName
FROM LoadTestPageDetail p
JOIN LoadTestTestDetail detail
ON p.LoadTestRunId = detail.LoadTestRunId
AND p.TestDetailId= detail.TestDetailId
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN WebLoadTestRequestMap map
ON p.loadtestrunid = map.loadtestrunid
AND p.PageId = map.RequestId
JOIN @items i
ON i.Test = tc.TestCaseId
AND i.Page = map.RequestId
JOIN LoadTestDetailMessage dm
ON p.LoadTestRunId = dm.LoadTestRunId
AND p.TestDetailId = dm.TestDetailId
AND p.PageDetailId = dm.PageDetailId
JOIN @errors errors
ON dm.MessageTypeId = errors.ErrorId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
LEFT JOIN LoadTestBrowsers b
ON detail.LoadTestRunId = b.LoadTestRunId
AND detail.BrowserId = b.BrowserId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND p.EndTime > @StartTime
AND
(
(
p.TimeStamp >=@StartTime
AND p.TimeStamp <@EndTime
)
OR
(
p.TimeStamp < @StartTime
)
)
AND (
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
ORDER BY s.ScenarioId,AgentId,UserId, PageDetailId
END
GO
--GRANT EXECUTE ON Prc_GetUserPageDetail TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetUserTransactionDetail]
@LoadTestRunId INT,
@StartTime DATETIME,
@EndTime DATETIME,
@FilterNoLog BIT,
@ItemsXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @docHandle INT
--parse the items
DECLARE @items TABLE (
Test INT NOT NULL,
TransactionId INT NOT NULL
)
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @ItemsXml
INSERT @items
SELECT t,tt
FROM OPENXML(@docHandle, N'/items/i', 0)
WITH (
t INT,
tt INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
--Select all transactions active during that time span
SELECT UserId,
TransactionDetailId,
TestCaseName,
t.TimeStamp as StartTime,
t.EndTime,
ScenarioName,
detail.AgentId,
s.ScenarioId,
t.ElapsedTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1),
t.TransactionId,
wt.TransactionName,
agent.AgentName
FROM LoadTestTransactionDetail t
JOIN LoadTestTestDetail detail
ON t.LoadTestRunId = detail.LoadTestRunId
AND t.TestDetailId= detail.TestDetailId
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN WebLoadTestTransaction wt
ON t.LoadTestRunId = wt.LoadTestRunId
AND t.TransactionId = wt.TransactionId
JOIN @items i
ON i.Test = tc.TestCaseId
AND i.TransactionId = wt.TransactionId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
LEFT JOIN LoadTestBrowsers b
ON detail.LoadTestRunId = b.LoadTestRunId
AND detail.BrowserId = b.BrowserId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND t.EndTime > @StartTime
AND
(
(
t.TimeStamp >=@StartTime
AND t.TimeStamp <@EndTime
)
OR
(
t.TimeStamp < @StartTime
)
)
AND (
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
ORDER BY s.ScenarioId,AgentId,UserId, TransactionDetailId
GO
--GRANT EXECUTE ON Prc_GetUserTransactionDetail TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetInitialDetailRange]
@LoadTestRunId int,
@StartTime DATETIME,
@EndTime DATETIME
AS
SET NOCOUNT ON
DECLARE @MinStartTime DATETIME
DECLARE @MaxEndTime DATETIME
--First figure out the boundaries
SELECT @MinStartTime = @StartTime,
@MaxEndTime = @EndTime
SELECT @MinStartTime = MIN(TimeStamp),
@MaxEndTime = MAX(EndTime)
FROM LoadTestTestDetail
WHERE LoadTestRunId = @LoadTestRunId
AND EndTime > @MinStartTime
AND
(
(
TimeStamp >=@MinStartTime
AND TimeStamp <@MaxEndTime
)
OR
(
TimeStamp < @MinStartTime
)
)
SELECT @MinStartTime AS MinStartTime,
@MaxEndTime AS MaxEndTime
GO
--GRANT EXECUTE ON Prc_GetInitialDetailRange TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetUniqueDetailIds]
@LoadTestRunId INT,
@DetailType TINYINT
AS
SET NOCOUNT ON
IF (@DetailType = 0) -- Test
BEGIN
SELECT DISTINCT TestCaseId
FROM LoadTestTestDetail detail
WHERE detail.LoadTestRunId = @LoadTestRunId
END
ELSE IF (@DetailType = 1) --Transaction
BEGIN
SELECT DISTINCT TestCaseId,t.TransactionId
FROM LoadTestTransactionDetail t
JOIN WebLoadTestTransaction wt
ON t.LoadTestRunId = wt.LoadTestRunId
AND t.TransactionId = wt.TransactionId
WHERE t.LoadTestRunId = @LoadTestRunId
END
ELSE IF (@DetailType = 2) -- Page
BEGIN
SELECT DISTINCT TestCaseId,PageId
FROM LoadTestPageDetail p
JOIN WebLoadTestRequestMap map
ON p.loadtestrunid = map.loadtestrunid
AND p.PageId = map.RequestId
WHERE p.LoadTestRunId = @LoadTestRunId
END
GO
--GRANT EXECUTE ON Prc_GetUniqueDetailIds TO PUBLIC
GO
CREATE PROCEDURE [Prc_GetUserTestDetail]
@LoadTestRunId int,
@StartTime DATETIME,
@EndTime DATETIME,
@FilterNoLog BIT,
@FilterSuccessfulResults BIT,
@ItemsXml NVARCHAR(MAX),
@ErrorsXml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @docHandle INT
--parse the items
DECLARE @items TABLE (
Test INT NOT NULL
)
--parse the errors
DECLARE @errors TABLE (
ErrorId INT NOT NULL
)
-- Parse the XML input for items into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @ItemsXml
INSERT @items
SELECT t
FROM OPENXML(@docHandle, N'/items/i', 0)
WITH (
t INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
-- Parse the XML input for errors into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @ErrorsXml
INSERT @errors
SELECT t
FROM OPENXML(@docHandle, N'/errors/i', 0)
WITH (
t INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
IF (@FilterSuccessfulResults=0)
BEGIN
--Select all tests active during that time span
SELECT UserId,
detail.TestDetailId,
TestCaseName,
TimeStamp as StartTime,
EndTime,
ScenarioName,
Outcome,
detail.AgentId,
s.ScenarioId,
ElapsedTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1) AS TestLogId,
agent.AgentName
FROM LoadTestTestDetail detail
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN @items i
ON i.Test = tc.TestCaseId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN LoadTestDetailMessage dm
ON detail.LoadTestRunId = dm.LoadTestRunId
AND detail.TestDetailId = dm.TestDetailId
JOIN LoadTestMessageType mt
ON mt.LoadTestRunId = dm.LoadTestRunId
AND mt.MessageTypeId = dm.MessageTypeId
JOIN @errors errors
ON mt.MessageTypeId = errors.ErrorId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND EndTime > @StartTime
AND
(
(
TimeStamp >=@StartTime
AND TimeStamp <@EndTime
)
OR
(
TimeStamp < @StartTime
)
)
AND
(
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
UNION
-- Add the rows for successful outcomes
SELECT UserId,
detail.TestDetailId,
TestCaseName,
TimeStamp as StartTime,
EndTime,
ScenarioName,
Outcome,
detail.AgentId,
s.ScenarioId,
ElapsedTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1) AS TestLogId,
agent.AgentName
FROM LoadTestTestDetail detail
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN @items i
ON i.Test = tc.TestCaseId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND EndTime > @StartTime
AND
(
(
TimeStamp >=@StartTime
AND TimeStamp <@EndTime
)
OR
(
TimeStamp < @StartTime
)
)
AND
(
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
AND
(
Outcome = 10
)
ORDER BY s.ScenarioId,AgentId,UserId,TestDetailId
END
ELSE
BEGIN
--Select all tests active during that time span
SELECT UserId,
detail.TestDetailId,
TestCaseName,
TimeStamp as StartTime,
EndTime,
ScenarioName,
Outcome,
detail.AgentId,
s.ScenarioId,
ElapsedTime,
TestType,
NetworkName,
ISNULL(TestLogId,-1) AS TestLogId,
agent.AgentName
FROM LoadTestTestDetail detail
JOIN LoadTestCase tc
ON detail.LoadTestRunId = tc.LoadTestRunId
AND detail.TestCaseId = tc.TestCaseId
JOIN LoadTestScenario s
ON tc.LoadTestRunId = s.LoadTestRunId
AND tc.ScenarioId = s.ScenarioId
JOIN @items i
ON i.Test = tc.TestCaseId
JOIN LoadTestRunAgent AS agent
ON detail.LoadTestRunId = agent.LoadTestRunId
AND detail.AgentId = agent.AgentId
JOIN LoadTestDetailMessage dm
ON detail.LoadTestRunId = dm.LoadTestRunId
AND detail.TestDetailId = dm.TestDetailId
JOIN LoadTestMessageType mt
ON mt.LoadTestRunId = dm.LoadTestRunId
AND mt.MessageTypeId = dm.MessageTypeId
JOIN @errors errors
ON mt.MessageTypeId = errors.ErrorId
LEFT JOIN LoadTestNetworks n
ON detail.LoadTestRunId = n.LoadTestRunId
AND detail.NetworkId = n.NetworkId
WHERE detail.LoadTestRunId = @LoadTestRunId
AND EndTime > @StartTime
AND
(
(
TimeStamp >=@StartTime
AND TimeStamp <@EndTime
)
OR
(
TimeStamp < @StartTime
)
)
AND
(
(@FilterNoLog = 1 AND TestLogId IS NOT NULL)
OR
(@FilterNoLog = 0)
)
ORDER BY s.ScenarioId,AgentId,UserId,TestDetailId
END
GO
--GRANT EXECUTE ON Prc_GetUserTestDetail TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryPossibleCountersForReport]
@runsxml NVARCHAR(MAX)
AS
SET NOCOUNT ON
DECLARE @docHandle INT
DECLARE @runs TABLE (
runId INT NOT NULL
)
-- Parse the XML input into a temporary table
EXEC sp_xml_preparedocument @docHandle OUTPUT, @runsxml
INSERT @runs
SELECT i
FROM OPENXML(@docHandle, N'/runs/r', 0)
WITH (
i INT
)
-- Done with the document now
EXEC sp_xml_removedocument @docHandle
-- Return Runs Info
SELECT DISTINCT CategoryName,
CounterName
FROM @runs r
JOIN LoadTestComputedCounterSummary cat
ON r.runId = cat.LoadTestRunId
ORDER BY CategoryName,CounterName
GO
--GRANT EXECUTE ON prc_QueryPossibleCountersForReport TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryComputedCounterSummary
@ReportId INT,
@CounterName NVARCHAR(255),
@CategoryName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId as LoadTestRunId,
MachineName,
CategoryName,
CounterName,
InstanceName,
CumulativeValue
FROM LoadTestComputedCounterSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CategoryName = @CategoryName
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryComputedCounterSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryLoadTestPageSummary
@ReportId INT,
@CounterName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId as LoadTestRunId,
CounterName,
ScenarioName,
TestCaseName,
RequestUri,
Cumulativevalue
FROM LoadTestPageSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryLoadTestPageSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryLoadTestTestCaseSummary
@ReportId INT,
@CounterName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId as LoadTestRunId,
CounterName,
ScenarioName,
TestCaseName,
Cumulativevalue
FROM LoadTestTestCaseSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryLoadTestTestCaseSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryLoadTestTransactionSummary
@ReportId INT,
@CounterName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId as LoadTestRunId,
CounterName,
ScenarioName,
TestCaseName,
TransactionName,
Cumulativevalue
FROM LoadTestTransactionSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryLoadTestTransactionSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryLoadTestRequestSummary
@ReportId INT,
@CounterName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId as LoadTestRunId,
CounterName,
ScenarioName,
TestCaseName,
RequestUri,
Cumulativevalue
FROM LoadTestRequestSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryLoadTestRequestSummary TO PUBLIC
GO
CREATE PROCEDURE Prc_QueryLoadTestScenarioSummary
@ReportId INT,
@CounterName NVARCHAR(255)
AS
SELECT LoadTestName,
a.LoadTestRunId,
CounterName,
ScenarioName,
CumulativeValue
FROM LoadTestScenarioSummary a
JOIN LoadTestReportRuns b
ON a.LoadTestRunId = B.LoadTestRunId
WHERE b.ReportId = @ReportId
AND CounterName = @CounterName
ORDER BY a.LoadTestRunId
GO
--GRANT EXECUTE ON Prc_QueryLoadTestScenarioSummary TO PUBLIC
GO
CREATE PROCEDURE [Prc_QueryLoadTestPageComparison]
@Baseline INT,
@ComparisonRun INT
AS
SELECT run1.ScenarioName,
run1.TestCaseName,
run1.RequestUri,
run1.CumulativeValue AS Baseline,
run2.CumulativeValue AS ComparisonRun,
run2.ResponseTimeGoal
FROM LoadTestPageSummary run1
LEFT JOIN (SELECT *
FROM LoadTestPageSummary
WHERE LoadTestRunId =@ComparisonRun )run2
ON run1.ScenarioName = run2.ScenarioName
AND run1.TestCaseName = run2.TestCaseName
AND run1.RequestUri = run2.RequestUri
AND run1.CounterName = run2.CounterName
WHERE run1.LoadTestRunId = @Baseline
AND run1.CounterName = 'Avg. Page Time'
AND run1.TestCaseName != '_Total'
GO
--GRANT EXECUTE ON Prc_QueryLoadTestPageComparison TO PUBLIC
GO
CREATE PROCEDURE [Prc_QueryLoadTestTestComparison]
@Baseline INT,
@ComparisonRun INT
AS
SELECT run1.ScenarioName,
run1.TestCaseName,
run1.CumulativeValue AS Baseline,
run2.CumulativeValue AS ComparisonRun
FROM LoadTestTestCaseSummary run1
LEFT JOIN (SELECT *
FROM LoadTestTestCaseSummary
WHERE LoadTestRunId = @ComparisonRun) run2
ON run1.ScenarioName = run2.ScenarioName
AND run1.TestCaseName = run2.TestCaseName
AND run1.CounterName = run2.CounterName
WHERE run1.LoadTestRunId = @Baseline
AND run1.CounterName = 'Avg. Test Time'
AND run1.TestCaseName != '_Total'
GO
--GRANT EXECUTE ON Prc_QueryLoadTestTestComparison TO PUBLIC
GO
CREATE PROCEDURE [Prc_QueryLoadTestTransactionComparison]
@Baseline INT,
@ComparisonRun INT
AS
SELECT run1.ScenarioName,
run1.TestCaseName,
run1.TransactionName,
run1.CumulativeValue AS Baseline,
run2.CumulativeValue AS ComparisonRun
FROM LoadTestTransactionSummary run1
LEFT JOIN (SELECT *
FROM LoadTestTransactionSummary
WHERE LoadTestRunId = @ComparisonRun) run2
ON run1.ScenarioName = run2.ScenarioName
AND run1.TestCaseName = run2.TestCaseName
AND run1.TransactionName = run2.TransactionName
AND run1.CounterName = run2.CounterName
WHERE run1.LoadTestRunId = @Baseline
AND run1.CounterName = 'Avg. Response Time'
AND run1.TransactionName != '_Total'
GO
--GRANT EXECUTE ON Prc_QueryLoadTestTransactionComparison TO PUBLIC
GO
CREATE PROCEDURE [Prc_QueryComputedCounterComparison]
@ReportId INT,
@Baseline INT,
@ComparisonRun INT
AS
SELECT run.LoadTestRunId AS LoadTestRunId,
run.MachineName AS MachineName,
run.CategoryName AS CategoryName,
run.CounterName AS CounterName,
run.HigherIsBetter AS HigherIsBetter,
run.InstanceName AS InstanceName,
run.CumulativeValue AS CumulativeValue
FROM LoadTestReportPage report
JOIN LoadTestComputedCounterSummary run
ON report.CategoryName = run.CategoryName
AND report.CounterName = run.CounterName
WHERE report.ReportId = @ReportId
AND run.LoadTestRunId in( @Baseline,@ComparisonRun)
AND (run.CategoryName NOT LIKE 'LoadTest:%'
OR (run.CategoryName LIKE 'LoadTest:%' AND run.InstanceName = '_Total'))
ORDER BY LoadTestRunId, MachineName, CategoryName, CounterName, InstanceName
GO
--GRANT EXECUTE ON Prc_QueryComputedCounterComparison TO PUBLIC
GO
CREATE PROCEDURE [prc_QueryForMachinesInRun]
@Baseline INT,
@ComparisonRun INT
AS
SET NOCOUNT ON
SELECT LoadTestRunId AS LoadTestRunId,
ControllerName AS Machine,
'Controller' AS MachineRole
FROM LoadTestRun
WHERE LoadTestRunId in (@Baseline,@ComparisonRun)
UNION
SELECT LoadTestRunId AS LoadTestRunId,
AgentName AS Machine,
'Agent' AS MachineRole
FROM LoadTestRunAgent
WHERE LoadTestRunId in (@Baseline,@ComparisonRun)
UNION
SELECT SUT.LoadTestRunId AS LoadTestRunId,
MachineName AS Machine,
MachineTag AS MachineRole
FROM LoadTestSystemUnderTest AS SUT
LEFT JOIN LoadTestSystemUnderTestTag AS Tags
ON SUT.LoadTestRunId = Tags.LoadTestRunId
AND SUT.SystemUnderTestId = Tags.SystemUnderTestId
WHERE SUT.LoadTestRunId in (@Baseline,@ComparisonRun)
UNION
SELECT DISTINCT LoadTestRunId AS LoadTestRunId,
MachineName AS Machine,
NULL AS MachineRole
FROM LoadTestPerformanceCounterCategory
WHERE LoadTestRunId in (@Baseline,@ComparisonRun)
ORDER BY LoadTestRunId, Machine,MachineRole
GO
--GRANT EXECUTE ON [prc_QueryForMachinesInRun] TO PUBLIC
GO
CREATE PROCEDURE [Prc_QueryLoadTestErrorComparison]
@Baseline INT,
@ComparisonRun INT
AS
DECLARE @errors TABLE (
LoadTestRunId INT NOT NULL,
ErrorType TINYINT NOT NULL,
SubType NVARCHAR(64),
ErrorCount INT NOT NULL
)
--get baseline errors
INSERT INTO @errors
SELECT DISTINCT @Baseline, MessageType, SubType, COUNT(*) as Count
FROM LoadTestMessage
WHERE LoadTestRunId = @Baseline
GROUP BY MessageType, SubType
--get comparison errors
INSERT INTO @errors
SELECT DISTINCT @ComparisonRun, MessageType, SubType, COUNT(*) as Count
FROM LoadTestMessage
WHERE LoadTestRunId = @ComparisonRun
GROUP BY MessageType, SubType
--top select gets errors that both runs have and ones that only run1 have
--bottom select gets errors that are only in the comparison run
SELECT run1.ErrorType,
run1.SubType,
run1.ErrorCount AS Baseline,
run2.ErrorCount AS ComparisonRun
FROM @errors run1
LEFT JOIN (SELECT * FROM @errors WHERE LoadTestRunId = @ComparisonRun) run2
ON run1.ErrorType = run2.ErrorType
AND run1.SubType = run2.SubType
WHERE run1.LoadTestRunId = @Baseline
UNION
SELECT run2.ErrorType,
run2.SubType,
run1.ErrorCount AS Baseline,
run2.ErrorCount AS ComparisonRun
FROM @errors run2
LEFT JOIN (SELECT * FROM @errors WHERE LoadTestRunId = @Baseline) run1
ON run1.ErrorType = run2.ErrorType
AND run1.SubType = run2.SubType
WHERE run2.LoadTestRunId = @ComparisonRun
AND run1.ErrorType IS NULL
ORDER BY ErrorType, SubType
GO
--GRANT EXECUTE ON Prc_QueryLoadTestErrorComparison TO PUBLIC
GO
-- Install each of the error messages into the system message table.
EXEC sp_addmessage 560500, 16, '%s: Generic error - %%error="%d";%% executing %s statement for %s', @lang = 'us_english', @replace = replace
GO
--Create default Load Test Reports
INSERT INTO LoadTestReport
SELECT 'LOADTEST_RUNCOMPARISON_REPORT_DEFAULT', -- Report Name
NULL, -- Description
'LOADTEST_RUNCOMPARISON_REPORT_DEFAULT', -- LoadTest
-1, -- LastRunId
1, -- SelectNewRuns
GetUtcDate(), -- LastModified
'', -- User
2 -- ReportType
DECLARE @ReportId INT
SELECT @ReportId = MAX(ReportId) FROM LoadTestReport
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Memory',
'Available MBytes'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Network Interface',
'Bytes Total/sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'PhysicalDisk',
'% Idle Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Processor',
'% Processor Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Process',
'% Processor Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Page',
'Avg. Page Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Request',
'Requests/Sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Scenario',
'User Load'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Test',
'Avg. Test Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Test',
'Total Tests'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Transaction',
'Avg. Response Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Transaction',
'Total Transactions'
GO
INSERT INTO LoadTestReport
SELECT 'LOADTEST_TREND_REPORT_DEFAULT', -- Report Name
NULL, -- Description
'LOADTEST_TREND_REPORT_DEFAULT', -- LoadTest
-1, -- LastRunId
1, -- SelectNewRuns
GetUtcDate(), -- LastModified
'', -- User
1 -- ReportType
DECLARE @ReportId INT
SELECT @ReportId = MAX(ReportId) FROM LoadTestReport
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Memory',
'Available MBytes'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Network Interface',
'Bytes Total/sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'PhysicalDisk',
'% Idle Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Processor',
'% Processor Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'Process',
'% Processor Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Page',
'Pages/Sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Page',
'Avg. Page Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Request',
'Requests/Sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Scenario',
'User Load'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Test',
'Avg. Test Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Test',
'Total Tests'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Transaction',
'Avg. Response Time'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Transaction',
'Transactions/Sec'
INSERT INTO LoadTestReportPage
SELECT @ReportId,
'LoadTest:Transaction',
'Total Transactions'
GO
-- Sets DB recovery mode to simple
ALTER DATABASE [LoadTest2010] SET RECOVERY Simple
GO
--GRANT CONTROL TO PUBLIC
GO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment