Справочная информация: У меня есть очень сложная хранимая процедура, которая динамически создает SQL на основе десяти параметров.Помимо этого, он использует некоторые представления, которые сами по себе довольно сложны.Как можно себе представить, в некоторых случаях результирующий оператор SQL генерирует довольно много (как в триллионах в худшем случае) логических чтений.У меня есть несколько стратегий, над которыми я работаю.
Испытание проводов: Я создал диагностическую хранимую процедуру, которая запускает хранимую процедуру с различными настройками параметров и сохраняет результаты вТаблица.Здесь записываются выходные данные и набор параметров, использованный для его генерации.
Чего мне не хватает: Я хочу получить метрики производительности программно.Я не хочу запускать каждый тест, а затем записывать их.У меня есть двадцать с лишним нечетных наборов параметров и растет.И я также сравниваю разные версии сохраненного процесса.
То, что я думаю, я хочу: «Установить статистику IO ON» дает мне то, что я ищу, но информация показываетвверх на вкладке «сообщения». Есть ли способ вернуть эту информацию, чтобы мой сохраненный процесс мог поместить эти значения в мою таблицу результатов?
Это пример запросов, созданных для проверки моего сохраненного процесса.Этот пример кода генерируется более 60 раз (один раз для набора параметров в тестовом процессе).Эта конкретная итерация проверяет хранимый процесс ORIGINAL с набором параметров № 11.
DECLARE @LSBA_table table (ViewStatementBalanceAllUid uniqueidentifier, AccountResponsiblePartyUid uniqueidentifier, FinancialCenterUid uniqueidentifier, FinancialCenterName varchar(255), Balance money, CycleTrigger BIT, LastStatementDate Date, AccountResponsiblePartyFullName varchar(255), LastName varchar(255), ExternalID varchar(25), PayerCreditBalance Money, StatementsByFinancialCenter bit, SendStatement bit);
INSERT INTO @LSBA_table EXEC LoadStatementBalanceAll_ORIGINAL @nameRangeSearch = 'A-Bzzz', @onDemand = 0, @daysBack=30, @financialCenterUid='7FAEF75C-914F-491F-8FE2-0A747FD84088;8709E580-13BC-4E4B-9325-D8F3AB1B2868', @minBalance=25.00
INSERT INTO CUS_LSBA_RESULTS (StoredProcName, ParameterId,ViewStatementBalanceAllUid,AccountResponsiblePartyUid,FinancialCenterUid,FinancialCenterName,Balance,CycleTrigger,LastStatementDate,AccountResponsiblePartyFullName,LastName,ExternalID,PayerCreditBalance,StatementsByFinancialCenter,SendStatement) (SELECT 'LoadStatementBalanceAll_ORIGINAL', 11, * FROM @LSBA_table)