Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
Как передать количество мили секунд в параметре?
Пишу:
CREATE PROCEDURE [dbo].[RunCode]
	-- Add the parameters for the stored procedure here
 @TimeForOut int = 20000
AS
BEGIN
	-- SET NOCOUNT ON added to prevent extra result sets from
	-- interfering with SELECT statements.
	SET NOCOUNT ON;
	/*IF @TimeForOut = 0 
		BEGIN 
			SET @TimeForOut = 20000;
		END*/
	SET LOCK_TIMEOUT @TimeForOut
	--exec @TextQuery;
	
END

, а он мне:
Сообщение 102, уровень 15, состояние 3, процедура RunCode, строка 19
Неправильный синтаксис около конструкции "LOCK_TIMEOUT".
15 май 15, 13:28    [17644925]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Minamoto
Member

Откуда: Москва
Сообщений: 1162
TimonSX, по всей видимости, никак.

Можно сделать через динамику, но тогда значение будет применяться только внутри exec:

declare @sql nvarchar(max);

set @sql = 'set lock_timeout ' + cast(@TimeForOut as nvarchar(max)) + '; ' + @TestQuery;

exec (@sql);
15 май 15, 13:53    [17645142]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
MSSQLBug
Guest
Minamoto
TimonSX, по всей видимости, никак.

Да, не выйдет: https://connect.microsoft.com/SQLServer/feedback/details/735949/set-lock-timeout-to-a-variable
15 май 15, 14:09    [17645279]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
TimonSX,

Если у вас это универсальная супер-процедура для запуска любого когда, то и запихайте тогда LOCK_TIMEOUT в @TextQuery.

Ну а вообще, LOCK_TIMEOUT это параметр сессии и выставлятся должен вашим клиентским приложением перед тем как вызывать процедуру.
15 май 15, 23:40    [17647907]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 8826
TimonSX, если Вы точно не понимаете - для чего это делаете и каких последствий ожидать, то не используйте SET LOCK_TIMEOUT.
16 май 15, 11:42    [17648448]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
Я точно понимаю что это. Когда 1С подключается через внешнее соединение к базе SQL то ставит LOCK_TIMEOUT -1.
И в итоге через неделю две я имею кучу повисших транзакций. И чего-то у меня никак не получается установить нужный LOCK_TIMEOUT, даже с помощью хранимых процедур.
16 май 15, 12:11    [17648504]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Glory
Member

Откуда:
Сообщений: 104751
TimonSX
И в итоге через неделю две я имею кучу повисших транзакций.

А вы не пробовали завершать транзакции ?
18 май 15, 08:23    [17653415]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
Пробовали. Но запись идет через типовой механизм 1С внешние источники, и 1с при завершении транзакции говорит, что такой транзакции нет. То есть она её сама завершает, но почему то, время от времени она это не делает и не дает тебе руками завершить транзакцию и тогда транзакция виснет.
20 май 15, 11:24    [17665484]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Glory
Member

Откуда:
Сообщений: 104751
TimonSX
Пробовали. Но запись идет через типовой механизм 1С внешние источники, и 1с при завершении транзакции говорит, что такой транзакции нет.

И поэтому вместо исправления 1с вы решили "исправить" сервер ?
20 май 15, 11:27    [17665500]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
Ну 1с я исправить не могу, поэтому решил исправить на стороне сервера SQL.
Тех поддержка 1С ответила, спасибо за сообщение будет передано в отдел разработки платформы.
20 май 15, 13:01    [17666029]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
TimonSX
Ну 1с я исправить не могу, поэтому решил исправить на стороне сервера SQL.
Тех поддержка 1С ответила, спасибо за сообщение будет передано в отдел разработки платформы.
Абсолютно не понятно как вам LOCK_TIMEOUT поможет избавиться от зависших транзакций.
20 май 15, 19:37    [17668433]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
Тогда подскажите что мне может помочь от зависших транзакций и соединений?
21 май 15, 08:44    [17669744]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Glory
Member

Откуда:
Сообщений: 104751
TimonSX
Тогда подскажите что мне может помочь от зависших транзакций и соединений?

Закрывать транзакции корректно
21 май 15, 08:48    [17669754]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
TimonSX
Member

Откуда:
Сообщений: 91
А как это сделать то.
А то после такого (как скриншот) все начинает виснуть и лагать

К сообщению приложен файл. Размер - 20Kb
21 май 15, 17:06    [17672833]     Ответить | Цитировать Сообщить модератору
 Re: Хочу создать хранимую процедуру SET LOCK_TIMEOUT (а оно ругается)  [new]
Glory
Member

Откуда:
Сообщений: 104751
TimonSX
А как это сделать то.

В приложении, которое начало эту транзакцию, нажать "кнопочку", которая завершит текущий запрос
22 май 15, 08:14    [17674291]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить