Ошибка sql 0 время ожидания запроса истекло

Здравствуйте, товарищи!
Озаботился написанием скрипта на Power Shell для бэкапа нескольких баз данных из MS SQL.

$Server = "localhost"
$BaseName = "master"
$BaseLogin = "user"
$BasePassw = "password"
$connection = New-Object -com "ADODB.Connection"
$ConnectionString = "Provider=SQLOLEDB.1;
                     Data Source=$Server;
                     Initial Catalog=$BaseName;
                     User ID=$BaseLogin;
                     Password=$BasePassw;
		     Connection Timeout=0;"
$connection.Open($ConnectionString)
$connection.Execute("BACKUP DATABASE [db_name] TO DISK = 'd:bakdb_name.sql' WITH INIT, NOFORMAT, SKIP, NOUNLOAD")
$connection.Close()

Это, разумеется, урезанный код и он возвращает ошибку: Исключение при вызове «Execute» с «1» аргументами: «Время ожидания запроса истекло».
При этом, если выполнять запрос из Management Studio, то запрос выполняется без ошибок. Время выполнения чуть более 2х минут.
Поковыряв интернет, нашел совет поиграться с Connecction Timeout в строке подключения. Обещают, что при значении «0» ошибка таймаута должна исчезнуть. Не тут-то было…
Подскажите, плз, как побороть эту беду?

While I would be tempted to blame my issues — I’m getting the same error with my query, which is much, much bigger and involves a lot of loops — on the network, I think this is not the case.

Unfortunately it’s not that simple. Query runs for 3+ hours before getting that error and apparently it crashes at the same time if it’s just a query in SSMS and a job on SQL Server (did not look into details of that yet, so not sure if it’s the same error; definitely same spot, though).

So just in case someone comes here with similar problem, this thread:
https://www.sqlservercentral.com/Forums/569962/The-semaphore-timeout-period-has-expired

suggest that it may equally well be a hardware issue or actual timeout.

My loops aren’t even (they depend on sales level in given month) in terms of time required for each, so good month takes about 20 mins to calculate (query looks at 4 years).

That way it’s entirely possible I need to optimise my query. I would even say it’s likely, as some changes I did included new tables, which are heaps… So another round of indexing my data before tearing into VM config and hardware tests.

Being aware that this is old question: I’m on SQL Server 2012 SE, SSMS is 2018 Beta and VM the SQL Server runs on has exclusive use of 132GB of RAM (30% total), 8 cores, and 2TB of SSD SAN.

  • Remove From My Forums
  • Question

  • Hi ,

    We have a data warehouse in which there are jobs which moves the data from publisher to warehouse and to distribution box, now last week we had one production issue in that job didnt fail but  missed the one complete step due to «Query time out» in
    which SQL did not raise any error for «Query Time out» and job succeded without performing one complete step so the  data published was not proper to downstream , now we have worked out some work around to handle this situation , but the problem
    is how to test this with the jobs , i mean can any one tell us any time out configuration which we can use on server/database to minimize or maximize query execution and thats how we can achive that error of query time out.

    So the question here is how can we achive «Query time out» error in application keeping some settings on db server?

    This is very critical , any pointer/guidence would be highly appreciable :)

    Thanks,

    -Mithun

Answers

  • A client is what we used to connect to SQL Server, like SQL Server Management Studio and SQLCMD. If we create a .NET application using ADO.NET to connect to SQL Server, it’s also a client.

    If you want to test your application, I think you can use the WAITFOR statement to make a stored procedure run for a long time.


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

    • Marked as answer by

      Friday, July 23, 2010 4:44 PM

  • Remove From My Forums
  • Question

  • Hi ,

    We have a data warehouse in which there are jobs which moves the data from publisher to warehouse and to distribution box, now last week we had one production issue in that job didnt fail but  missed the one complete step due to «Query time out» in
    which SQL did not raise any error for «Query Time out» and job succeded without performing one complete step so the  data published was not proper to downstream , now we have worked out some work around to handle this situation , but the problem
    is how to test this with the jobs , i mean can any one tell us any time out configuration which we can use on server/database to minimize or maximize query execution and thats how we can achive that error of query time out.

    So the question here is how can we achive «Query time out» error in application keeping some settings on db server?

    This is very critical , any pointer/guidence would be highly appreciable :)

    Thanks,

    -Mithun

Answers

  • A client is what we used to connect to SQL Server, like SQL Server Management Studio and SQLCMD. If we create a .NET application using ADO.NET to connect to SQL Server, it’s also a client.

    If you want to test your application, I think you can use the WAITFOR statement to make a stored procedure run for a long time.


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.

    • Marked as answer by

      Friday, July 23, 2010 4:44 PM

  • Remove From My Forums
  • Вопрос

  • При добавлении в SQL таблицу столбца зависает эта таблица. При попытки получить из нее данные выдает ошибку «Время ожидания истекло». Спасает только отсоединениеприсоединение БД. В чем может быть проблема, может
    кто сталкивался??? 

Ответы

  • из GUI

     «виснет» — значит не могу просмотреть данные в таблицах не через GUI, не через web-приложение.
    Другие БД работают.

    Забудьте про ГУИ совсем…запустите запрос, посмотрите на блокировки из-за которых происходит ожидание…уверен причина в том, что вы накладываете блокировку sch-m, при изменении таблицы (о чём я писал ещё в первом ответе)
    и транзакция остаётся висеть открытой


    http://www.t-sql.ru

    • Изменено

      15 августа 2013 г. 11:33

    • Предложено в качестве ответа
      Иван ПродановMicrosoft contingent staff, Moderator
      19 августа 2013 г. 6:23
    • Помечено в качестве ответа
      Иван ПродановMicrosoft contingent staff, Moderator
      20 августа 2013 г. 6:51

  

twilight5023

08.05.07 — 18:52

Очень надеюсь на вашу помощь, хочу разобраться в следующей ситуации. Итак, имелось 1С 7.7 (25), ТиС, SQL Server 2000 — 8.00.679(SP2), практически год безупречной работы. Сегодня при попытке проведения счета-фактуры появилась ошмбка SQL State: HYT00 Native: 0 Message: [Microsoft][ODBC SQL Server Driver]Время ожидания истекло, попытка повторить транзакцию к успеху не привела. Соответственно на всех машинах в сети, то же самое. Работа остановилась. Перезапустил SQL сервер — то же самое, перезагрузил сервер — эффекта 0. Отключив сервер от сети, попробовал зайти с него в 1С и создать новую реализацию, при попытке записать — SQL State: HYT00 Native: 0 Message: [Microsoft][ODBC SQL Server Driver]Timeout expired. Почитал всякие посты на всевозможных форумах. Отключил named pipes, оставив только TCP/IP, попробовал зайти с рабочей станции — без named pipes соединяться с SQL почему-то отказался. Опять же отключив сервер от сети, зашел с него в 1С. Реализация не записывалась с указанной выше ошибкой. Минут 15 пробовал всевозможные варианты, затем в конфигураторе прописал в параметрах соединения с базой, вместо имени сервера sqlserver IP’шник — 127.0.0.1, запустил Profiler, открыл базу и попробовал записать реализацию. На этот раз ошибка не появилась, но судя по профайлеру он «думал» над каким-то select’ом из таблицы DH1611 (судя по 1Cv7.DDS — как раз документ реализация) добрых 5 минут, при этом это было достаточно заметно по активности винтов в RAID’е. После чего реализация все-таки записалась и все вернулось к нормальной работе. Вернул named pipes, сейчас все работает. Вопрос, который мне не дает покоя. ЧТО ЭТО БЫЛО? Почему до того как я прописал вместо имени sql сервера его 127.0.0.1 документ не записывался, совпадение? Может быть дадите какие-то рекомендации, в плане — как исключить в дальнейшем подобную ситуацию, порядок действий при ее возникновении, выяснение причины произошедшего? Стоит ли обновить SQL Server до SP3? Может быть проблема именно в этом? Возможно ли возникновение такой ситуации (может быть сейчас глупо прозвучит, но все же) из-за какой-то внутренней блокировки таблиц в SQL? Как вы понимаете после перезагрузки сервера отключенного от сети, пользователи не работали, никакие ресурсоемкие отчеты и т.п. не выполнялись … вообщем я не знаю на что и думать. Надеюсь на вашу помощь.

  

twilight5023

2 — 08.05.07 — 18:54

+0: http://www.mista.ru/kb/topic4990.htm — это читал. Если все дело, по вашему мнению, в версии SQL, то какой на данный момент последний SP к нему, и последняя версия драйверов ODBC?

  

sapphire

3 — 08.05.07 — 19:16

ну в (2) не совсем то. что нужно. Почитай логи скуля, системы… просто так ничего не бывает.

  

jcage

4 — 08.05.07 — 19:33

(3) у меня была похожая проблема. База самописка, достаточно легкая — локально на моем компьютере при записи база висла и могла висеть несколько минут — потом ошибка, почти как в (0). Пробовал даже переставить sql и выгрузку/загрузку — не помогало. В результате я взял рабочий МД из каталога БД и у клиента новый архив базы. После восстановления из архива — все заработало. Что это было так и не понял. Уже прошло полгода — на рабочей таких багов не замечается.

P.S. В базе много прямых запросов.

  

romix

Модератор

5 — 08.05.07 — 19:33

(0) Кто-то заблокировал проведение документов, и пошел обедать (например, в модуле проведения есть модальное окно). Даже если его нет, в движке 1С есть ошибка, когда окно «Недостаточно прав доступа» открывается именно внутри транзакции проведения.

Кто именно всех блокирует, можно посмотреть в Enterprise Manager.

Как вариант, можно всех выгнать и попросить заново войти
(я использую выгонялку Книга знаний: Альтернативное стартовое окно для 1С:Предприятие 7.7 ).

  

jcage

6 — 08.05.07 — 19:34

(5) а почему после перезагрузки сервера ошибка не пропала? Врядли в этом дело.

  

romix

Модератор

7 — 08.05.07 — 19:42

(6) Даже не знаю как это могло получиться, ск. всего внутренняя ошибка MS-SQL.
Имеет смысл обновить движок, почистить папку временных файлов, сделать стоп-старт серверу, выгрузить-загрузить…
Также возможно имеет смысл поставить последний сервис-пак MS-SQL (там же наверняка исправляются всякие ошибки).

  

twilight5023

8 — 08.05.07 — 19:58

В логах «C:Program FilesMicrosoft SQL ServerMSSQLLOG» есть только упоминание о:

2007-05-08 17:27:42.65 spid8     The header for file ‘C:Program FilesMicrosoft SQL ServerMSSQLdatamsdblog.ldf’ is not a valid database file header. The PageAudit property is incorrect.
2007-05-08 17:27:42.65 spid8     Device activation error. The physical file name ‘C:Program FilesMicrosoft SQL ServerMSSQLdatamsdblog.ldf’ may be incorrect.

В Enterprise Manager’е она значится, как msdb (Suspect) … Может ли это иметь отношение к моей проблеме, что это за DB такая, и как ее вывести из состояния suspect?

  

jcage

9 — 08.05.07 — 20:00

а лог файл каких размеров?..

  

twilight5023

10 — 08.05.07 — 20:04

В смысле? errorlog от MSSQL или msdblog.ldf? Первый 3 килобайта, второй около двух метров. За что отвечает база msdb и насколько опасно то, что она находится в состоянии suspect?

  

romix

Модератор

11 — 08.05.07 — 20:32

А база как называется в MS-SQL?

  

twilight5023

12 — 08.05.07 — 23:17

Вообщем начитался я тут всякого:

http://www.klerk.ru/soft/1c/?15077 — тут рассказывается про восстановление пользовательских баз данных, мне не помогло конечно, ибо msdb системная, но зато узнал что такое sp_attach_db и sp_attach_single_file_db. Думал воспользоваться вторым (аттач одного mdf’f) для восстановления msdb, не тут то было. Потом стал читать:

http://support.microsoft.com/kb/224071/ru — Перемещение баз данных SQL Server в новое местоположение с помощью операций Detach и Attach. Как раз про перемещение системных баз данных. В моем случае можно было (в теории) сделать detach msdb, а потом attach_single_file_db, но почему-то, несмотря на прописанные ключи -c -m -T3608, он на любых операциях аттача / детача с системными таблицами говорил:

Server: Msg 7940, Level 16, State 1, Line 1

System databases master, model, msdb, and tempdb cannot be detached.

Хотя по идее должен был разрешить.

В итоге взял два файла из дистрибутива MSSQL — x86DATAmsdblog.ldf и x86DATAmsdbdata.mdf и подсунул их SQL Server’у.

Может кто-нибудь прокомментирует, почему он не давал сделать detach. Я грешу на то, что msdb находилась в suspect’е, но ведь он ясно сказал что именно системные таблицы не могут быть отключены, почему-то он ключи проигнорировал, интересно почему? Сейчас вроде бы все работает, но что-то меня беспокоит … не чревата ли такая подмена msdb?

  

romix

Модератор

13 — 09.05.07 — 02:41

(12) Детач не дает сделать для системных таблиц.
Но можно остановить сервер и подсовывать таблицы.

По идее не чревата, только вот почему оно вот так все накернилось?
Может, заряженная частица пролетела, и все испортила? :-)

  

КонецЦикла

14 — 09.05.07 — 03:09

>>Вернул named pipes
Чего не айпи?
>>Стоит ли обновить SQL Server до SP3?
Можно и до 4-го :)

  

Стальная Крыса

15 — 09.05.07 — 03:29

в мире мелкософта есть много чудес   :)
вот одно из них:
однажды после переезда MSSQL с 1-процессорного сервера на на 2х процевый
с некоторых(!!!) машин невозможно было запустить 1С…
не буду описывать пляски с бубном… но все решилось установкой нового, на тот момент, MDAC на «проблемные» машины.   :)
зы. естественно ОС и SQL на другом сервере ставились с того же самого дистрибутива, с какого ставилось и на первый.

  

twilight5023

16 — 10.05.07 — 12:55

(13) Как раз в статье http://support.microsoft.com/kb/224071/ru описан способ с помощью которого можно сделать detach для системных таблиц (статья по ссылке как раз о перемещении системных таблиц в другое месторасположение), только вот у меня этот способ почему-то не сработал.

Ну вообщем ладно, главное что все работает. Спасибо всем принимавшим участие в обсуждении.

  

Conditer

17 — 30.07.07 — 12:21

Такая же ошибка у меня начала неожиданно возникать на некоторых машинах при попытке вообще войти в 1С. Причем на одной через день ошибка перестала появлятся сама. А еще через 2 месяца вдруг другие 2 машины уперлись  — и ни в какую к SQL серверу не подключались. Как тут посоветовали, поставил в конфигураторе вместо имени сервера IP-адрес — всё заработало. Чудеса…

  • Remove From My Forums

none

Время ожидания истеко до завершения операции, или сервер не отвечает

  • Вопрос

  • Добавить данные в БД получается только со второй попытки.. при первой всегда выскакивает эта ошибка.. данные добавляются только после перезагрузки приложения.. как с этим бороться? 

    • Перемещено

      2 октября 2010 г. 0:14
      MSDN Forums Consolidation (От:SQL Server для разработчиков)

Ответы

  • Увеличте в вашем приложении врмея ожидания, по умолчанию TimeOut=30 sec


    http://www.t-sql.ru

    • Помечено в качестве ответа
      I.Vorontsov
      5 июля 2010 г. 4:20
  • Remove From My Forums
  • Question

  • Hello,

    I am running SQL query on my local machine to remote server, The query ends with Msg -2, level 11, state 0, Line 0 Timeout expired, The timeout period elapsed prior to completion of the operation or the server not responding.

    I tried below  steps which dint work.

    1) Selected Tools -> Options >Expanded the «Query Execution» node> Clicked on «SQL Server» >Set
    value for «Execution time-out» to 0 and various numbers up to 180.

    But when I run on remote machine local its running great.  

    Please help.

    • Edited by

      Friday, October 16, 2015 10:09 PM

Answers

  • So did you look in the places I told you to?


    Erland Sommarskog, SQL Server MVP, esquel@sommarskog.se

    • Marked as answer by
      Eric__Zhang
      Wednesday, October 28, 2015 1:05 AM

You’re trying to connect to a SQL Server, and it is taking longer than ADO.NET is willing to wait.

Try connecting to the same server, using the same username and password, using SQL Server Management Studio. If you get the same error, there is either something wrong with your connection string, the server you specify is not running, or you can’t get to the server across the network from where you are (maybe you’re on a public IP address trying to get in to an internal server name). I can’t think of a scenario in which you’d enter the exact same server and credentials into SSMS and connect, then do the same in ADO.NET and fail.

If you’re on a slow network, you can try increasing the timeout value. However, if a connection is going to happen at all, it should happen pretty quickly.

Take a look at both your SQL Native Client settings, and the SQL Server settings on the server. There is a section for allowed protocols; SQL can connect using a variety of protocols. Usually, you want TCP/IP for a server on the network, and Named Pipes for a server running on your own computer.

EDIT FROM YOUR COMMENT: Oh, that’s normal; happens all the time. From time to time on a TCP network, packets «collide», or are «lost» in transmission. It’s a known weakness of packet-switching technologies, which is managed by the TCP protocol itself in most cases. One case in which it isn’t easily detected is when the initial request for a connection is lost in the shuffle. In that case, the server doesn’t know there was a request, and the client didn’t know their request wasn’t received. So, all the client can do is give up.

To make your program more robust, all you have to do is expect a failure or two, and simply re-try your request. Here’s a basic algorithm to do that:

SqlDataAdapter sqlClearQuestDefects;

short retries = 0;
while(true)
{
    try
    {
       sqlClearQuestDefects = new SqlDataAdapter(sql, "Data Source=ab;Initial Catalog=ac;User ID=ad; Password =aa");
         break;
    }
    catch(Exception)
    {
       retries++;
         //will try a total of three times before giving up
       if(retries >2) throw;    
    }
}

   m74y

13.05.10 — 12:42

Ситуация такая, необходимо получить данные из сторонней базы sql.

например:

   стрПодключения = «Provider=SQLOLEDB.1;»;

   стрПодключения = стрПодключения + «User ID=user;password=fjfghfnfh;Data Source=Test_1Cmssqlserver2008;database=baza;»;

   
   АДОДБКоннект = Новый COMОбъект(«ADODB.Connection»);

   АДОДБКоннект.Open(стрПодключения);

   
   RS = Новый COMОбъект(«ADODB.Recordset»);

   ИмяТаблицы = «[A.Biz.Part]»;

   ЗапросSql = «Select

   |    *

   |From » + ИмяТаблицы + »

   |Where ven LIKE ‘%4545%'»;    

   
   RS.Open(ЗапросSql, АДОДБКоннект);

   
   Пока RS.EOF() = 0 Цикл

       RS.MoveNext();

   КонецЦикла;

   RS.Close();    

   АДОДБКоннект.Close();    

выдает ошибку:

Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло

   Господин ПЖ

1 — 13.05.10 — 12:47

как я его понимаю… таймаут будет Пушкин указывать…

   H A D G E H O G s

2 — 13.05.10 — 12:48

(1) Там вроде по дефолту есть.

   Смешной 1С

3 — 13.05.10 — 12:48

АДОДБКоннект.ConnectionTimeOut=…;

   m74y

4 — 13.05.10 — 12:49

Эхехе, если бы в это было дело….
все дело вот в этой строке:
   |Where ven LIKE ‘%4545%'»;

если символ «%» убрать спереди, то все работает так как надо

   sapphire

5 — 13.05.10 — 12:51

(4) Небось записей дофига

   m74y

6 — 13.05.10 — 12:51

но только ищет она шаблоны которые НАЧИНАЮТСЯ с 4545, а надо что бы искались все вхождения 4545

   Megas

7 — 13.05.10 — 12:52

А ещё можно выбирать не
*
А что то более конкретное

   sapphire

8 — 13.05.10 — 12:52

(6) А то мы не догадались

   m74y

9 — 13.05.10 — 12:53

(5) Да база очень большая
(7)  это не так важно, можно выбрать и 2 поля разницы нет

   szhukov

10 — 13.05.10 — 12:54

(6) добавь:

select top 10 *

тогда точно будет видно, таймаут из-за кол-ва записей или ошибка какая-то.

   sapphire

11 — 13.05.10 — 12:54

(0) Пройди Profilerом запрос, посмотри план выполнения запроса на SQL Server.

Небось seek по неиндексированнному полю.

   szhukov

12 — 13.05.10 — 12:54

+(10)если не ошибаюсь
АДОДБКоннект.ConnectionTimeOut=0 — будет выбирать до упора

   Лефмихалыч

13 — 13.05.10 — 12:55

(9) индексировать не пробовал?

   DmitrO

14 — 13.05.10 — 12:57

(11) Seek-ов по неиндексированному полю не бывает :)

   sapphire

15 — 13.05.10 — 12:57

(9) В SQLSMS запрос выполнять пробовали?

   Смешной 1С

16 — 13.05.10 — 12:58

АДОДБКоннект.ConnectionTimeOut=0 укажи

   sapphire

17 — 13.05.10 — 12:58

(14) Верно. Я не то хотел сказать.

   sapphire

18 — 13.05.10 — 13:00

(12)(16) Если запрос будет возвращать 70 000 000 000 записей … Вы уверены что нужно ждать пока сервак упадет?

   Megas

19 — 13.05.10 — 13:02

Разовое действие ?
Если да.. забобахай промежуточную таблицу , перепиши туда что надо по частям.

   m74y

20 — 13.05.10 — 13:06

все, догадки кончились?

   m74y

21 — 13.05.10 — 13:07

блин, инет тормозит

   sapphire

22 — 13.05.10 — 13:08

(20) И?

   Смешной 1С

23 — 13.05.10 — 13:08

(20) Хоть какие-то попробовали варианты? (10), (19)?

   m74y

24 — 13.05.10 — 13:13

попробовал (10)- то же самое
(16)- в ошибке пишет время ожидания ЗАПРОСА истекло, этот таймаут здесь совсем не причем, но тем не менее то же не помогает

   m74y

25 — 13.05.10 — 13:15

(19) нет, не разовое действие…

   sapphire

26 — 13.05.10 — 13:17

(24) В SQLSMS запрос выполнять пробовали?

   m74y

27 — 13.05.10 — 13:20

нет, сейчас попробую

   Serginio1

28 — 13.05.10 — 13:26

АДОДБКоннект.CommandTimeOut=0

   shuhard

29 — 13.05.10 — 13:28

(27) брось херней изучаться
если без Like работает, то извлекай все записи и фильтруй на клиенте

   Gepard

30 — 13.05.10 — 13:29

(13) +1

   Serginio1

31 — 13.05.10 — 13:31

Или Так

Command = Новый COMОбъект(«ADODB.Command»);

Command.ActiveConnection=АДОДБКоннект;

Command.CommandType = 1;

Command.CommandTimeout=0;

Command.CommandText=ЗапросSql;

РекордСет=Command.Execute();

   szhukov

32 — 13.05.10 — 13:36

(29) Плохой вариант, сервер как правило мощнее, а если клиент не потянет такого объема?

   sapphire

33 — 13.05.10 — 13:39

(32) Тянуть данные в несколько потоков.

Здесь вообще нопонятно, если поле неиндекисровано и проиндексировать его нельзя из-за объема таблицы, то необходимо использовать доп. условия, что бы сократить объемы данных. Т.е. читать данные порциями, можно и параллельно.

   shuhard

34 — 13.05.10 — 13:41

(32) лажа
ставь динамический Recordset

   m74y

35 — 13.05.10 — 13:41

в SQL SMS нет пока ответа, обрабатывается

   shuhard

36 — 13.05.10 — 13:43

(35) самое время тип поля ven огласить

   m74y

37 — 13.05.10 — 13:43

Таблица в почти 30 млн. наименований

   Шляпентох

38 — 13.05.10 — 13:43

(35) вы своим LIKE ‘%4545%’ лишаете sql server возможности использовать индекс.. Вот он и сканирует все 30 млн. наименований..

   m74y

39 — 13.05.10 — 13:46

тип поля ven- строка

(38) тогда почему эта зараза ‘4545%’ вот так работает?

   shuhard

40 — 13.05.10 — 13:47

(39) потому что %4545% приходится искать по всей длине строки
с 1,2,3..N позиции
чем строка длиннее — тем куевей

   Sadovnikov

41 — 13.05.10 — 13:48

(39)
‘%4545%’ — индекс НЕ используется
‘4545%’- индекс используется

   shuhard

42 — 13.05.10 — 13:49

(39) + тип строка ни о чем не говорит
на сиквеле уйма разных типов строк

   m74y

43 — 13.05.10 — 13:49

в SQL SMS все нашлось, время на выполнение запроса — около 7 минут

   Шляпентох

44 — 13.05.10 — 13:50

(43) значит ставьте соответствующий таймаут, если время выполнения устраивает. Если не устраивает, а запрос должен искать именно %4545% — самое время задуматься и почитать про полнотекстовое индексирование..

   m74y

45 — 13.05.10 — 13:52

(44) как выставить соответствующий таймаут?

   sapphire

46 — 13.05.10 — 13:53

(43) Записей сколько возвращается?

   Шляпентох

47 — 13.05.10 — 13:54

(45) смотри (3), (16), (31)

   szhukov

48 — 13.05.10 — 13:59

(45) см (12)

   szhukov

49 — 13.05.10 — 13:59

не успел :)

   m74y

50 — 13.05.10 — 14:02

Ошибка звучит так:

Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания ЗАПРОСА истекло

этот таймаут здесь никакой роли не играет, хоть поставь ему 0, хоть что другое

(46) Одна

   Шляпентох

51 — 13.05.10 — 14:06

(50) И о чем, по Вашему говорит эта ошибка?

   kiruha

52 — 13.05.10 — 14:06

Where ven LIKE ‘%4545%’

такие запросы приводят к полному сканированию таблицы.
Если например млн записей — будет миллион юзать

Используй полнотекстовый поиск

   kiruha

53 — 13.05.10 — 14:07

http://ru.wikipedia.org/wiki/Полнотекстовый_поиск
Первые версии программ полнотекстового поиска предполагали сканирование всего содержимого всех документов в поиске заданного слова или фразы. При использовании такой технологии поиск занимал очень много времени (в зависимости от размера базы), а в интернете был бы невыполним. Современные алгоритмы заранее формируют для поиска так называемый полнотекстовый индекс — словарь, в котором перечислены все слова и указано, в каких местах они встречаются. При наличии такого индекса достаточно осуществить поиск нужных слов в нём и тогда сразу же будет получен список документов, в которых они встречаются.

   Шляпентох

54 — 13.05.10 — 14:08

+(51) и задумайтесь, пожалуйста, о переводе слова timeout, прежде чем будете (если будете) отвечать

   sapphire

55 — 13.05.10 — 14:11

(50)

http://msdn.microsoft.com/ru-ru/library/ms678265(v=VS.85).aspx

стрПодключения = «Provider=SQLOLEDB.1;»;

   стрПодключения = стрПодключения + «User ID=user;password=fjfghfnfh;Data Source=Test_1Cmssqlserver2008;database=baza;»;

   
   АДОДБКоннект = Новый COMОбъект(«ADODB.Connection»);

   АДОДБКоннект.Open(стрПодключения);

   АДОДБКоннект.CommandTimeout=600; // Время в секундах сколько ждать выполнения запроса.

   RS = Новый COMОбъект(«ADODB.Recordset»);

   ИмяТаблицы = «[A.Biz.Part]»;

   ЗапросSql = «Select

   |    *

   |From » + ИмяТаблицы + »

   |Where ven LIKE ‘%4545%'»;    

   
   RS.Open(ЗапросSql, АДОДБКоннект);

   
   Пока RS.EOF() = 0 Цикл

       RS.MoveNext();

   КонецЦикла;

   RS.Close();    

   АДОДБКоннект.Close();

   sapphire

56 — 13.05.10 — 14:12

(54) Use the CommandTimeout property on a Connection object or Command object to allow the cancellation of an Execute method call, due to delays from network traffic or heavy server use. If the interval set in the CommandTimeout property elapses before the command completes execution, an error occurs and ADO cancels the command. If you set the property to zero, ADO will wait indefinitely until the execution is complete. Make sure the provider and data source to which you are writing code support the CommandTimeout functionality.

The CommandTimeout setting on a Connection object has no effect on the CommandTimeout setting on a Command object on the same Connection; that is, the Command object’s CommandTimeout property does not inherit the value of the Connection object’s CommandTimeout value.

On a Connection object, the CommandTimeout property remains read/write after the Connection is opened.

   Gepard

57 — 13.05.10 — 14:24

(0) есть возможность правки структуры таблиц, по которым запрос делается?

   sapphire

58 — 13.05.10 — 14:28

(57) 30 лямов записей можно проиндексировать,

включить сжатие page, построить кластерный индекс.

   Gepard

59 — 13.05.10 — 14:31

(58) ну и я об этом… добавить индекс к полю

   Sadovnikov

60 — 13.05.10 — 14:38

(58) «построить кластерный индекс» — а точно ли надо?

   Gepard

61 — 13.05.10 — 14:49

(60) кластерный не нужен точно

   Шляпентох

62 — 13.05.10 — 14:51

(58) а смысл индексирования? там может и так индекс есть.. только вот условие ТС не дает использовать индексы по этому полю..

   m74y

63 — 13.05.10 — 14:59

(57) возможность править структуры таблиц отсутствует, т.к. в настоящий момент база используется рабочей 7- кой

   sapphire

64 — 13.05.10 — 15:03

(63) код из (55) пробовал?

   Sadovnikov

65 — 13.05.10 — 15:04

(61) Вот и я как раз пр ото же…

   m74y

66 — 13.05.10 — 15:12

(64) Да, спасибо, только что все работает, я перепутал CommandTimeout с ConnectionTimeout

   Serginio1

67 — 13.05.10 — 15:13

28 и 31 внимательнее смотреть надо. А то и писать нет смысла

   Gepard

68 — 13.05.10 — 16:00

(63) поставь в конфигурации в свойстве поля «Сортировка» и «Отбор по значению»

  

myshko

69 — 13.05.10 — 21:50

  • Ошибка sql server 10060
  • Ошибка sptd windows 7
  • Ошибка spn 1072 камаз
  • Ошибка srs freelander 1
  • Ошибка srs mercedes w164