Установка таймаута запроса на хранимую процедуру в SQL Server 2005

Кто-нибудь знает, как установить тайм-аут в хранимой процедуре? Нашли некоторые примеры в NET, например sp_configure «Тайм-аут Query Timeout», 5, но это не сработало. Также найдены некоторые команды «DBPROP_COMMANDTIMEOUT» и «DBPROP_GENERALTIMEOUT», но я не знаю, являются ли они правильными, и если да, то как их использовать в моем коде транзакции-SQL.

Как сказал Крис Тайбур, вы не можете запросить тайм-аут для сохраненного proc в сохраненном proc или на SQL Server.

CommandTimeout – концепция клиента: клиент прерывает запрос через определенное время. Нет таймера или механизма мертвого человека для сохраненного proc, чтобы прервать себя / или любой запрос). SQL-сервер позволит выполнять запрос навсегда.

« Тайм-аут удаленного запроса » – это то, что: тайм-аут, когда SQL Server делает удаленный вызов, когда сам SQL Server является клиентом другого сервера. В описании говорится:

Это значение применяется к исходящему соединению, инициированному Database Engine как удаленный запрос. Это значение не влияет на запросы, полученные в Database Engine.

Недавний вопрос с хорошей информацией: настройка тайм-аута для SQL Server

Я никогда не слышал об установке тайм-аута для выполнения хранимой процедуры на стороне сервера. Обычно вы указываете таймаут для команды, выполняющей процедуру в используемом вами поставщике данных, например ADO.NET.

Подождите – реальный вопрос: «Что происходит, что вы хотите предотвратить?» Все сосредоточились на стороне сервера, клиентской стороне, но на самом деле мы не знаем, почему вы задаете этот вопрос (и это важно).

И еще одно «почему»: почему вы хотите установить тайм-аут на «хранимую процедуру»? Почему не представление, функция или запрос? Используете ли вы термин «хранимая процедура» по определенной причине или просто хотите узнать, как установить тайм-аут в T-SQL?

Я спрашиваю, потому что я задаюсь вопросом, есть ли у вас проблемы с блокировкой, и, возможно, SET LOCK_TIMEOUT 1000 или WITH (NOLOCK) может быть тем, что вам действительно нужно. Без дополнительной информации, хотя я не могу сказать. Если вы можете дать нам больше отзывов о том, почему вы спрашиваете, что происходит, и что в конечном итоге вы хотите совершить, если ваш «тайм-аут» будет достигнут, возможно, мы сможем больше помочь.

Итог: Да, вы можете установить тайм-аут в T-SQL и да, вы можете остановить выполнение хранимой процедуры с помощью T-SQL. Но я не знаю достаточно о том, что вы хотите дать совет о том, где искать или дать вам больше информации. Я немного боюсь, что я уже сказал слишком много 🙂

Эта статья имеет очень хорошее объяснение тайм-аутов запроса и того, как они являются только клиентской концепцией. Вы можете установить тайм-аут запроса в студии управления SQL Server в меню «Инструменты | Параметры».

Вы должны установить тайм-аут при выполнении хранимой процедуры на клиенте. Что касается SQL Server, это позволит хранимой процедуре работать навсегда, если не будет сказано отменить ее.

Давайте будем гением компьютера.