2010-11-15 2 views
0

Хорошо, у нас есть два сервера баз данных, один из них принадлежит нам, один принадлежит партнеру. В последнее время у наших партнеров возникли проблемы, которые вызывают у нас многочисленные ошибки тайм-аута sql, что снижает нашу всю систему. Мы предпочли бы ограничить время, которое могут потребоваться этим запросам, чтобы сказать 20 секунд макс, иначе прекратите попытки и выбросите ошибку (которую мы можем поймать с помощью блока try/catch).Quarantine SQL Server запросы в .net 3.5

Пара вопросов:

  1. Есть ли способ, чтобы установить конкретную строку дб/подключение к таймаут после Х секунд?
  2. Это лучший способ для карантина этой другой системы? или есть ли лучшие способы сделать это?

Благодаря

+0

Вы пытаетесь установить время ожидания соединения на ASP.NET или SQLServer? Вы не можете установить его в строке соединения, но можете использовать объект sqlconnection. Можете ли вы опубликовать код? – jcolebrand

+0

Я не могу опубликовать код. Я, честно говоря, просто подумал о том, чтобы установить тайм-аут при написании этого вопроса, поэтому я не заглядывал в него. Я посмотрю на это и уточню – Prescott

+0

Да, хорошо, это был довольно глупый вопрос. commandTimeout в строке подключения будет работать нормально. – Prescott

ответ

1

Тупой вопрос - CommandTimeout в строке подключения будет достаточно для моих потребностей.

0

Эти проблемы лучше всего решаются SQL Server Resource Governor. Resource Governor ограничит объем памяти и процессора, которые может потреблять рабочая нагрузка. Вы можете разделить сервер на две рабочие нагрузки и распределить по 50% каждому, чтобы каждый из вас и ваш партнер могли потреблять 50% ресурсов сервера. Это намного лучше, чем установка CommandTimeout (который должен быть установлен отдельно для каждого SqlCommand, при этом установка его на строку подключения не влияет), поскольку тайм-аут команды будет влиять не только на обе стороны (т. Е. На злоупотребление ресурсами и жертва), но также слишком поздно: commandTimeout будет реагировать только после, сервер работает медленно. Кроме того, партийные банки могут злоупотреблять ресурсами с частыми небольшими командами.

+0

, но если вы знаете, что конкретный запрос длинный, не имеет смысла просить снисхождения к _that_ запросу? Тогда вам не нужно менять управление по умолчанию – jcolebrand

+0

Поскольку я читаю OP, он не хочет снисхождения, но вместо этого вмешательство: агрессивное более низкое командное время до таймаута раньше, когда сервер не отвечает. –

+0

Настройка CommandTimeout в строке соединения не будет иметь никакого эффекта? Почему же это вариант? Я хотел бы использовать Resource Governor - но мы на sql 2005. Я приложил массу усилий, пытаясь обновиться, но, в конце концов, нам легче перейти на наши собственные системы. – Prescott

Смежные вопросы