Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
_Промешан_ Member Откуда: Сообщений: 970 |
Братья и сестры. Есть ли возможность задать каким-то образом в одной транзакции, где несколько запросов, для соответствующего запроса максимальное время выполнения? Ситуация такая: используется CLR, который сходу на все проверить невозможно. И возникают ситуации "закольцевания". (по мимо того, что это можно наверное решить тупо счетчиком итераций, что не хотелось бы). Запрос в этом случае ждет максимальное доступное время. Примерно такой смысл [sql]-- гдето здесь таймаут выставить, т.к. проверка функции по сути, терпимо, чем потом проблемы, которые могут возникнуть, если этого не проверить до след шага. select dbo.SomeFunc(Field) from SomeTable -- а здесь обнулить update something from something[/sql] |
11 окт 13, 19:03 [14958184] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
слегка черезжопно и с клиента - можно поставить Command Timeout на выполнение батча но вроде как это не гарантирует, что запрос тут же снимется по факту таймаута |
11 окт 13, 19:17 [14958233] Ответить | Цитировать Сообщить модератору |
Уленшпигель Member Откуда: Сообщений: 115 |
_Промешан_, нельзя. Только на весь батч, как сказал Crimean |
11 окт 13, 20:15 [14958352] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
второй "черезжопный" вариант - "метить" процесс вплоть до context_info и вешать "следилку", которая киляет по разнице getdate() с lastbatch из процессов.... |
11 окт 13, 20:45 [14958458] Ответить | Цитировать Сообщить модератору |
_Промешан_ Member Откуда: Сообщений: 970 |
То есть в теле процедуры, без участия клиента, вообще никак?.. |
||
11 окт 13, 22:31 [14958784] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
_Промешан_, можно ограничить время ожидания блокировки. это если "честно" остальное "честно же" я не представляю как ограничить ресурсы - можно зажать. проц и память - так точно но сиквел изначально построен на неопределенном времени выполнения, это же не реалтайм система а обойти это видится только как внешний контроль над известным процессом вариантов - масса, но все с точки зрения контролируемого процесса - внешние имхо, конечно же |
11 окт 13, 22:44 [14958845] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
p.s. пересмотрел вопрос еще раз. так - еще сложнее. ибо 1 выполнение CLR UDF может быть и быстрым. а вот сколько их будет выполнено в итоге сервером - тот еще вопрос. я про execution count. было бы просто что-то типа select @result = someproc( @someparams ) можно было бы внутри этой CLR себя же контролировать.. так что пока только внешний контроль выполнения это кстати не исключает реализации в хранимке же но не самыми очевидными средствами |
11 окт 13, 22:55 [14958888] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Как раз это гарантируется. |
||
12 окт 13, 05:54 [14959987] Ответить | Цитировать Сообщить модератору |
_Промешан_ Member Откуда: Сообщений: 970 |
С урезанием ресурсов не пробовал (вопроса не стояло) :) Может быть тут сработает? :)
Да, разве что контроль внутри себя. Но тогда ошибок не найти, если они есть (а они могут быть). |
||||||
16 окт 13, 13:30 [14979743] Ответить | Цитировать Сообщить модератору |
Crimean Member Откуда: Сообщений: 13148 |
_Промешан_, а мы таймауты не путаем? их несколько, и лок таймаут слегка отличается от комманд таймаута |
16 окт 13, 14:54 [14980415] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |