Вызов хранимой процедуры из-за ошибки тайм-аута VB.net - PullRequest
4 голосов
/ 23 апреля 2010

При вызове хранимой процедуры из vb.net есть ли время ожидания SQL по умолчанию, если в строке подключения не указано время ожидания?Я не уверен, есть ли в строке подключения значение CommandTimeout, но я прохожу все возможные варианты.

Пример, если по истечении 30 секунд (или более) нет результатов throw:

`System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.`

SQL Profiler говорит, что сценарий запускается и заканчивается через 30 секунд после истечения времени ожидания программы.

Сценарий выполняется без ошибок примерно за 1 минуту 45 секунд сам по себе на сервере SQL.

Ответы [ 5 ]

5 голосов
/ 23 апреля 2010

Значение времени ожидания для выполнения SQL не сохраняется в строке подключения, оно сохраняется в SqlCommand как SqlCommand.CommandTimeout.

По умолчанию 30 секунд.

1 голос
/ 23 апреля 2010

Есть два типа исключения тайм-аута, которые могут быть вызваны SqlClient объекты: SqlConnection и SqlCommand.

SqlConnection Возникает исключение тайм-аута, когда приложение пытается установить соединение, но не удалось в течение данного периода времени. Полагаю, это 500 секунд.

SqlCommand Тайм-аут определяет, как долго дается команда для приложение, которое использует SQLCommand для ожидания завершения работы SQL Server операция. Это 30 секунд.

При настройке SQLCommand измените CommandTimeout на большее

например.

cmd.CommandTimeout = 300
1 голос
/ 23 апреля 2010
0 голосов
/ 11 июня 2014

Если используется Entity Framework, CommandTimeout также существует в ModelsContainer:

Using dbcontext As New MyDatabase.ModelsContainer()
    dbcontext.CommandTimeout = 120

    'Linq command'

End Using
0 голосов
/ 23 апреля 2010

Рекомендуется попытаться улучшить работу SQL менее чем за 30 секунд. Это намного лучше, чем увеличение времени ожидания VB.

Чтобы получить лучшую помощь по проблеме производительности SQL, напишите следующее:

  • фактический sql
  • структура таблицы (список индексов)
  • план выполнения.

Для отображения плана выполнения. В SQL Server Management Studio запустите эту команду:

SET SHOWPLAN_XML ON

затем запустите свой медленный sql. фактический запрос не будет выполнен, но план выполнения будет отображаться в формате xml.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...