Имя: Пароль:
1C
 
Как установить параметры sql запроса в management studio?
,
0 break
 
08.12.14
10:50
Отловил я долгий запрос в профайлере, вывел текст запроса в ms и хочу его выполнить, чтоб посмотреть план, естественно наскоком он не выполняется, т.к. не определены параметры @P (Необходимо объявить скалярную переменную "@P1"). Как их объявить?
1 Apokalipsec
 
08.12.14
10:51
прописываешь его явно.
Определение параметров после текста запроса в профайлере
2 break
 
08.12.14
10:51
(1) пример можно
3 ДенисЧ
 
08.12.14
10:54
"естественно наскоком он не выполняется"
Это не естественно.

Профайлер показывает полный запрос. С определениями
4 break
 
08.12.14
11:13
(3) вот выловил простой запрос и пытаюсь его выполнить
SELECT
T1._IDRRef
FROM _Reference4327 T1 WITH(NOLOCK)
WHERE T1._Code = P1', N'P1 numeric(5)',10701'

при выполнении пишет
"Сообщение 137, уровень 15, состояние 2, строка 4
Необходимо объявить скалярную переменную "P1"."
5 Ёпрст
 
08.12.14
11:15
ну, смотри выше, там есть определени и значение для р1
6 ДенисЧ
 
08.12.14
11:18
(4) правильно отловленный начинается с sp_executesql...
7 break
 
08.12.14
11:20
(6) о спасибо, с sp_executesql...выполнилось
8 break
 
08.12.14
11:38
при использовании временных таблиц фокус не прокатывает :(
9 ДенисЧ
 
08.12.14
11:39
(8) Прокатывает. Только нужно больше одного запроса ловить
10 break
 
08.12.14
11:43
вообщем смысл был в том чтобы отлавливать тяжелые запросы профайлером не сильно его нагружая, если включить сбор планов (ShowplanXMLStatisticsProfile) то данные сыплются так что сервер захлебывается. А как еще настроить так, чтобы отлавливать планы только тех запросов у которых дюратоион больше определенного значения уже не знаю..
11 break
 
08.12.14
11:44
(8) да но они не попадают из фильтра по продолжительности выполнения
12 break
 
08.12.14
11:44
(10) в смысле тянуть к тяжелым запросам их планы
13 Maxus43
 
08.12.14
11:46
ЦУП настроить может?
14 Maxus43
 
08.12.14
11:46
да и ShowplanXML - предварительный план, может отличаться от реального
15 Серго62
 
08.12.14
11:49
Скалярную переменную можно определить так:
declare P1 int
set P1 = 1

далее пойдет твой запрос, например:

select P1 as P1 -- проверка результата
16 Серго62
 
08.12.14
11:53
+(15) перед Р1 должен стоять символ @, куда-то он пропал...
17 break
 
08.12.14
11:56
(13) не хотелось в такие дебри лезть, тогда уж просто ТЖ настроить, но полученный там текстовый план лучше не видеть
18 Maxus43
 
08.12.14
12:01
по duration разве профайлер не настраивается? вкрайняк потом после сбора можно из всех данных отобрать
19 break
 
08.12.14
12:01
(14) а какое тогда событие покажет действительный план?
20 break
 
08.12.14
12:09
(18) в смысле duration на ShowplanXMLStatisticsProfile?
21 Maxus43
 
08.12.14
12:17
(20) не, duration на событие, показывающее сам запрос, его завершение. Нет под рукой профайлера, но емнип можно была настроить на продолжительность, не уверен.
(19) http://www.sql.ru/faq/faq_topic.aspx?fid=393
22 break
 
08.12.14
12:26
(21) RPC:Completed - показывает запрос, он у меня и так настроен
23 Maxus43
 
08.12.14
12:42
(22) там же duration в каком-то событии пишется, фильтровать можно по любому столбцу. Я могу ошибаться, не помню точно. По продолжительности обычно ТЖ и цуп юзают