Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Очень нужна помощь.  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 181
Заранее прошу прощения, к сожалению, ни как не смог найти интересующую меня тему.

У меня проблема с работой с большими таблицами, в среднем по 500 – 700 тысяч записей, при этом в каждой таблицы от 90 до 120 столбцов.
При обработке таких таблиц SQL выдает ошибку, связанную со временем ожидания, я несколько раз видел подобные проблемы и у других пользователей, но, к сожалению никто, не может посоветовать как, увеличить время ожидания или вообще его убрать как класс.

Запись ошибки.
Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

В основном возникает при выполнении многокритериальных выборок. Убедительная просьба не советовать индексировать таблицы. В них и так уже существует два ключа и индексы по полям, по которым в основном производиться выборка.
Очень нужна помощь.
1 ноя 09, 14:13    [7867654]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
Пользователи, которые получаютт это сообщение работают с базой данных из... некой аплипухи ?

П.С.: индексы-то могут и быть, а вот используются ли они? недавно столкнулась с мнением, что если проиндексировать все поля на который внешние ключи, то все хорошо... по 1-му индексу на поле. Почему-то только в плане при этом в 99% случаев clustered index scan вместо index seek - а это достаточно медленно :)
1 ноя 09, 14:21    [7867658]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Андрей Пл
Member

Откуда:
Сообщений: 21
Правильно ругается, значит запрос не оптимизирован. Да и таблица на самом деле маленькая.
Попробуй избавиться от связей с другими таблицами, сразу быстрее пойдет запрос. Условие не на текстовое поле, а на числовое. И т.п.
1 ноя 09, 14:27    [7867667]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
В общем, это не SQL выдает ошибку, а скорее всего Ваше приложение. Если, например, приложение подключается к БД через ADO, то у ADO есть 2 замечательных свойства:
- connection timeout
- query execution timeout

2-е по умолчанию 30 секунд. первое по-моему тоже 30, но оно нас не интересует.

Вам надо копать в сторому увеличения query execution timeout у компонента, с помощью которого Вы подключаетесь к БД в Вашем приложении.
1 ноя 09, 14:30    [7867671]     Ответить | Цитировать Сообщить модератору
 Очень нужна помощь.  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 181
А можно по конкретнее. Для работы с БД я пока использую SQL Server Management studio, а также специально самодельное приложение составления запросов для клиента. В каждой БД используется только одна из многих таблиц, при этом она без связей с другими таблицами. Но вне зависимости, что именно использовать выдаёт такое предупреждение и отказывается работать.

Вы могли бы просто указать, что именно необходимо использовать, чтобы сделать срок ожидания запроса хотя бы секунд 90 – 100

С уважением Сергей
1 ноя 09, 22:29    [7868559]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
РАндрей из дома
Guest
Кудряшка
В общем, это не SQL выдает ошибку, а скорее всего Ваше приложение. Если, например, приложение подключается к БД через ADO, то у ADO есть 2 замечательных свойства:
- connection timeout
- query execution timeout

2-е по умолчанию 30 секунд. первое по-моему тоже 30, но оно нас не интересует.

Вам надо копать в сторому увеличения query execution timeout у компонента, с помощью которого Вы подключаетесь к БД в Вашем приложении.


connection timeout - 15 сек
1 ноя 09, 22:54    [7868614]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Увеличивать таймауты - последнее дело. В первую очередь нужно проверить блокировки и планы выполнения долгоиграющих запросов.
2 ноя 09, 10:19    [7869270]     Ответить | Цитировать Сообщить модератору
 Очень нужна помощь.  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 181
Да причём здесь выполнение планов запросов, я даже не могу местами поля поменять в больших таблицах, он всегда отправляет на сохранении изменений, просто мрак какой-то.
2 ноя 09, 11:38    [7869734]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Teslenko Sergey
Да причём здесь выполнение планов запросов, я даже не могу местами поля поменять в больших таблицах, он всегда отправляет на сохранении изменений, просто мрак какой-то.

План тут при том, что от него зависит время выполнения. О превышении таймаута которого вы и видите сообщение
2 ноя 09, 11:44    [7869772]     Ответить | Цитировать Сообщить модератору
 Очень нужна помощь.  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 181
Glory,

Да я не спорю, просто, если немного обратить внимание на предыдущее сообщение мне даже не удаётся сохранить изменения в таблице.

Кстати, клиентское приложение подключается через Binding.
Возможно, ли настройка времени ожидания в таком случае?
Если да то как.
2 ноя 09, 11:54    [7869862]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
pr0ger
Member

Откуда: Москва
Сообщений: 1933
Teslenko Sergey
Да я не спорю, просто, если немного обратить внимание на предыдущее сообщение мне даже не удаётся сохранить изменения в таблице.


Блокировки?
2 ноя 09, 11:59    [7869907]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Glory
Member

Откуда:
Сообщений: 104760
Teslenko Sergey
Glory,

Да я не спорю, просто, если немного обратить внимание на предыдущее сообщение мне даже не удаётся сохранить изменения в таблице.

Если вы еще не поняли, то это сообщение вашего приложения, а не сервера.
Именно приложение решило прервать текущий запрос, потому что время его выполнения превысило заданный вами лимит.
Делайте что нибудь уже. Меняйте таймаут или меняйте запрос
2 ноя 09, 12:03    [7869947]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
Teslenko Sergey
Кстати, клиентское приложение подключается через Binding.


Это приложение на .NET чтоль?
Так спросите в форуме по .NET как работать с этим классом :)

SQL Server тут не при чем, особо, если Вы не хотите оптимизировать запросы ;)
2 ноя 09, 13:04    [7870558]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Teslenko Sergey
Member

Откуда:
Сообщений: 181
Кудряшка,

Да, приложение на NET.
А сам SQL Manager я не знаю, на чём работает, но, наверное, тоже на NET. так как при инсталляции пакета он проверял наличие необходимой версии.

А вы не подскажите, как его победить? :-(
2 ноя 09, 13:32    [7870778]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Кудряшка
Member

Откуда: Сидней
Сообщений: 2219
Еще раз.
Это не SQL Server выдает Вам ошибку.

Вам надо пойти на подфорум .NET и спросить как увеличить query execution timeout. При этом стоит упомянуть, что для подключения Вы используете Binding (кстати, а почему не ADO???... ну да ладно).

Лично я в .NET не разбираюсь.

П.С.: если уж таймаут увеличивать будете, ставьте сразу 0 - т.е. бесконечность. Потом приходите с вопросами по оптимизации запросов
2 ноя 09, 13:42    [7870851]     Ответить | Цитировать Сообщить модератору
 Re: Очень нужна помощь.  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3264
Кудряшка
Еще раз.
Это не SQL Server выдает Вам ошибку.

Вам надо пойти на подфорум .NET и спросить как увеличить query execution timeout. При этом стоит упомянуть, что для подключения Вы используете Binding (кстати, а почему не ADO???... ну да ладно).

Лично я в .NET не разбираюсь.

П.С.: если уж таймаут увеличивать будете, ставьте сразу 0 - т.е. бесконечность. Потом приходите с вопросами по оптимизации запросов

да автор и С# тоже не очень, как видно.
data binding
The process or method for configuring controls on a form or Web page to fetch data from or write data to a data source such as a database, XML file, and so on.

SqlCommand.CommandTimeout =
SqlDataAdapter.SelectCommand.CommandTimeout =
2 ноя 09, 14:01    [7871007]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить