Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Есть хранимая процедура(ХП). Когда ХП выполняется из managment studio, то она зависает

EXEC AKCIA_DSZ_PPRCZB '20130326','20130327','20130328','20130329','20130401','20130402','20130403','20130404','20130405','20130408',1,1,1

Если код выполняется из окна запроса, то всё выполняется быстро.


USE [TEST2]
GO
/****** Объект:  StoredProcedure [dbo].[AKCIA_DSZ_PPRCZB]    Дата сценария: 04/08/2013 14:31:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Create date: 
-- Description:	Расчет просроченных процентов вынесенных за баланс, программа: Динамика ссудной задолженности
-- =============================================
ALTER PROCEDURE [dbo].[AKCIA_DSZ_PPRCZB]
@d1 datetime, @d2 datetime, @d3 datetime, @d4 datetime, @d5 datetime, @d6 datetime, @d7 datetime, @d8 datetime, @d9 datetime, @d10 datetime, @kind_client int, @sign_client int, @category int
WITH EXEC AS CALLER
AS
BEGIN
	BEGIN TRANSACTION
--		if exists (select * from tempdb..sysobjects where id=object_id('tempdb..#temp1'))
		SELECT * INTO #temp1 FROM
		(
-----------------------------------------------------------------------------------------------------------
 SELECT distinct t0.STRACCOUNT AS ACCOUNT,
    AF.FIELD AS EXC,
    CASE WHEN CF.FIELD = 1 THEN 'A' ELSE '' END AS AKC,
    CASE WHEN C.KIND_CLIENT = 2 AND C.SIGN_CLIENT = 1 THEN C.LONG_NAME ELSE C.SHORT_NAME END AS CLIENT,

				dbo.svn_dynamo_sravn (ABS (s0.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d1
       ) AS C0,
					dbo.svn_dynamo_sravn (ABS (s1.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d2
       ) AS C1,
					dbo.svn_dynamo_sravn (ABS (s2.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d3
       ) AS C2,
					dbo.svn_dynamo_sravn (ABS (s3.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d4
       ) AS C3,
					dbo.svn_dynamo_sravn (ABS (s4.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d5
       ) AS C4,
					dbo.svn_dynamo_sravn (ABS (s5.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d6
       ) AS C5,
					dbo.svn_dynamo_sravn (ABS (s6.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d7
       ) AS C6,
					dbo.svn_dynamo_sravn (ABS (s7.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d8
       ) AS C7,
					dbo.svn_dynamo_sravn (ABS (s8.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d9
       ) AS C8,
					dbo.svn_dynamo_sravn (ABS (s9.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d10
       ) AS C9,
	case
		when kind_client=1 AND sign_client=1 then 'Юр. лицо'
		when kind_client=2 AND sign_client=2 then 'ИП'
		when kind_client=2 AND sign_client=1 then 'Физ. лицо'
	end AS type_client,
	/*(SELECT LR.GROUP_RISK FROM LOAN_RISK LR WHERE LR.ID_CONTRACT = LC.ID_CONTRACT
		AND LR.DATE_BEGIN=(SELECT max(LR2.DATE_BEGIN) FROM LOAN_RISK LR2 WHERE LR2.ID_CONTRACT=LC.ID_CONTRACT AND LR2.DATE_BEGIN < @d10)
		)*/ LR.GROUP_RISK AS категория_качества,
	kind_client,
	sign_client
    FROM LOAN_RISK LR, OD_ACCOUNTS2 t0
    JOIN OD_ACC2_ADDFL_INT AF ON
    T0.ID_ACCOUNT IN (SELECT ID_ACC_PRC_ARREARS_2 FROM LOAN_CONTRACT WHERE ID_ACC_PRC_ARREARS_2<>0) AND
    AF.ID_OBJECT = T0.ID_ACCOUNT AND AF.ID_FIELD=12
    JOIN CLIENTS C ON C.ID_CLIENT = t0.ID_CLIENT
	JOIN LOAN_CONTRACT LC ON LC.ID_ACC_PRC_ARREARS_2 = T0.ID_ACCOUNT
    LEFT JOIN CLIENTS_ADDFL_INT CF ON CF.ID_OBJECT = C.ID_CLIENT AND CF.ID_FIELD = 11
    JOIN OD_SALTRN2 s0 ON t0.id_ACCOUNT=s0.id_ACCOUNT AND s0.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d1)
    JOIN OD_SALTRN2 s1 ON t0.id_ACCOUNT=s1.id_ACCOUNT AND s1.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d2)
    JOIN OD_SALTRN2 s2 ON t0.id_ACCOUNT=s2.id_ACCOUNT AND s2.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d3)
    JOIN OD_SALTRN2 s3 ON t0.id_ACCOUNT=s3.id_ACCOUNT AND s3.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d4)
    JOIN OD_SALTRN2 s4 ON t0.id_ACCOUNT=s4.id_ACCOUNT AND s4.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d5)
    JOIN OD_SALTRN2 s5 ON t0.id_ACCOUNT=s5.id_ACCOUNT AND s5.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d6)
    JOIN OD_SALTRN2 s6 ON t0.id_ACCOUNT=s6.id_ACCOUNT AND s6.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d7)
    JOIN OD_SALTRN2 s7 ON t0.id_ACCOUNT=s7.id_ACCOUNT AND s7.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d8)
    JOIN OD_SALTRN2 s8 ON t0.id_ACCOUNT=s8.id_ACCOUNT AND s8.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d9)
    JOIN OD_SALTRN2 s9 ON t0.id_ACCOUNT=s9.id_ACCOUNT AND s9.date_trn=(SELECT MAX(date_trn) FROM OD_SALTRN2 WHERE t0.id_ACCOUNT=id_ACCOUNT AND date_trn<@d10)
    WHERE
    (	dbo.svn_dynamo_sravn (ABS (s0.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d1
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s1.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d2
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s2.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d3
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s3.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d4
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s4.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d5
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s5.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d6
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s6.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d7
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s7.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d8
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s8.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d9
       ) <>0 or
					dbo.svn_dynamo_sravn (ABS (s9.SALDO),
                                 LC.ID_CONTRACT,
                                 LR.GROUP_RISK,
                                 @d10
       ) <>0 ) AND LR.ID_CONTRACT = LC.ID_CONTRACT
----------------------------------------------------------------------------------------------------------------
		) t
		WHERE
			t.категория_качества = @category
		ORDER BY t.type_client, t.категория_качества, EXC, Client

		SELECT * FROM #temp1 WHERE kind_client=@kind_client AND sign_client=@sign_client

--		DROP TABLE #temp1
	COMMIT
END
9 апр 13, 10:59    [14155253]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Как сделать, чтобы процедура не висла?
Службу Sql Server перезапускал, сервер, на котором Sql Server тоже перезапускал
9 апр 13, 11:00    [14155259]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
Когда ХП выполняется из managment studio, то она зависает

Это вы как узнали ?
У вас есть средство мониторинга, которое определяет именно зависшие запросы ?
9 апр 13, 11:01    [14155270]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,
Средство мониторинга нет.
Если запрос выполняется из окна запроса - то это несколько секунд.
Если этот же запрос выполняется из ХП - то это несколько минут - а дальше у меня не хватает терпения ждать.
9 апр 13, 11:05    [14155301]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
а дальше у меня не хватает терпения ждать.

Это самое лучшее средство мониторинга - всегда под рукой и не требует настройки.
9 апр 13, 11:06    [14155309]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,
не порекомендуете другое средство мониторинга в 2005 managment studio?
9 апр 13, 11:12    [14155355]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
не порекомендуете другое средство мониторинга в 2005 managment studio?

А что стандартный мониториг коннектов в студии вы уже попробовали ?
9 апр 13, 11:14    [14155360]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Тот инструмент для мониторинга?

К сообщению приложен файл. Размер - 34Kb
9 апр 13, 11:19    [14155400]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
Тот инструмент для мониторинга?

Да
9 апр 13, 11:26    [14155451]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,
Научите, пожалуйста, куда смотреть в мониторинге активности, чтобы понять что происходит с моей процедурой?

Может, профайлер запустить?
Если да, то какой режим использовать.

К сообщению приложен файл. Размер - 18Kb
9 апр 13, 11:34    [14155506]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
Научите, пожалуйста, куда смотреть в мониторинге активности, чтобы понять что происходит с моей процедурой?

В сам мониторинг. Вам недостаточно полей в нем ?

NewIvanovec
Может, профайлер запустить?

Можете

NewIvanovec
Если да, то какой режим использовать

Не режим, а шаблон.
Стандартный вряд ли подойдет
9 апр 13, 11:42    [14155584]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

Из "сведения о процессе" перейти в "блокировки по объектам" и там найти строки с аналогичным идентификатором процесса?

К сообщению приложен файл. Размер - 22Kb
9 апр 13, 11:52    [14155677]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
Из "сведения о процессе" перейти в "блокировки по объектам" и там найти строки с аналогичным идентификатором процесса?

Для начала узнать хотя бы статус процесса.
9 апр 13, 11:54    [14155695]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

Под статусом я понимаю "последний пакет". Пакет не идёт.
9 апр 13, 11:58    [14155745]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
NewIvanovec,

К сообщению приложен файл. Размер - 2Kb
9 апр 13, 11:59    [14155751]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
Под статусом я понимаю "последний пакет"

Под статусом все понимают "Состояние"
9 апр 13, 11:59    [14155757]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

К сообщению приложен файл. Размер - 3Kb
9 апр 13, 12:04    [14155789]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
В вашем коннекте ничего не выполняется
9 апр 13, 12:05    [14155798]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

А процедура в окне запроса выполняется.

И что мне дальше делать с моим новым знанием :)

К сообщению приложен файл. Размер - 136Kb
9 апр 13, 12:10    [14155840]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
А процедура в окне запроса выполняется.

Вы в мониторе кнопку Обновить нажимали хоть раз ?
9 апр 13, 12:12    [14155853]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,
не один раз нажимал
9 апр 13, 12:12    [14155857]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
Значит не тот коннект смотрите
9 апр 13, 12:14    [14155871]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
NewIvanovec
Member

Откуда: Msk
Сообщений: 582
Glory,

нет других коннектов
9 апр 13, 12:17    [14155889]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Glory
Member

Откуда:
Сообщений: 104751
NewIvanovec
нет других коннектов

Так не бывает, что запрос выполняется, а сервер о нем ничего не знает
9 апр 13, 12:19    [14155899]     Ответить | Цитировать Сообщить модератору
 Re: Чудеса с хранимой процедурой в 2005 сервере  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Может у него в профайлере выставлено "ловить" только Completed ?
9 апр 13, 13:37    [14156384]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить