Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2011, 19:16   #1
dima_r
 
Регистрация: 31.03.2011
Сообщений: 9
Вопрос Ошибка при выполнении запроса

Обычненький запрос..
Код:
SELECT event_id, event FROM main 
WHERE sport_id = 1 AND event LIKE 'Какой-то текст'
GROUP BY event_id,event
Все очень просто main - Это таблица... всего одна.. в ней записей около 48млн.. колонок около 11-12..
При выполнении запроса вылетает ошибка:
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы

При этом если делать выборку только первых несколько тысяч строк, например 5-6, вот так:
Код:
SELECT TOP 6000 event_id,event FROM main 
WHERE sports_id = 1 AND event LIKE 'Какой-то текст'
GROUP BY event_id,event;
То все нормально, но если кол-во строк увеличить например до 20тыс., то вылетает уже ошибка, при этом при просмотре хода выполнения видно что считал около 10200 записей, и потом уже вылетела ошибка.
-----------------------------------------
на счет версии:

Microsoft SQL Server Management Studio 10.50.1600.1
Microsoft Analysis Services Client Tools 10.50.1600.1
Microsoft Data Access Components (MDAC) 6.1.7600.16385
Microsoft MSXML 3.0 4.0 5.0 6.0
Microsoft Internet Explorer 8.0.7600.16385
Microsoft .NET Framework 2.0.50727.4927
Operating System 6.1.7600
dima_r вне форума Ответить с цитированием
Старый 01.04.2011, 09:51   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

из-под чего выполняется сам запрос?
где скрин ошибки? код ошибки?
может даже ДДЛ-таблицы?
зачем вам такая портянка на выходе?
soleil@mmc вне форума Ответить с цитированием
Старый 02.04.2011, 05:11   #3
dima_r
 
Регистрация: 31.03.2011
Сообщений: 9
По умолчанию

Выполнение данной инструкции было прервано.
Сообщение 0, уровень 11, состояние 0, строка 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.
----------------------------------------------------
Таблица:
Код:
create table main
(
	id int primary key identity,
	sports_id int,
	event_id int,
	sete smalldatetime null,
	full nvarchar(256),
	s smalldatetime null,
	event nvarchar(48),
	dt_ smalldatetime null,
	sel_id int,
	sel nvarchar(48),
	od decimal(10,2),
	nu int,
	vol decimal(10,2),
	lat smalldatetime null,
	first_ smalldatetime null,
	win_ int,
	in_ nvarchar(8)
)

Последний раз редактировалось Stilet; 14.04.2011 в 17:54.
dima_r вне форума Ответить с цитированием
Старый 02.04.2011, 07:09   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

возможно, банально таймаут при выполнении запроса срабатывает!

(кстати, а действительно, а зачем Вам такая портянка на выходе?!! )

Как проверить, что срабатывает таймаут?
Засеките время выполнения запроса.
До момента возникновения ошибки проходит одинаковое время?

Ещё попробуйте запрос:
Код:
SELECT count(*) FROM main 
WHERE sport_id = 1 AND event LIKE 'Какой-то текст'
GROUP BY event_id,event
если он отработает и вернёт значение (а время вылета ошибки полного запроса примерно одно и то же) - на 99% виноват именно таймаут.
Тогда можно попробовать увеличить время timeout'а до нужной величины...

Или, лучше - менять идеологию работы с БД.
Поверьте, никому не нужен грид (или отчёт) с 20 тысячами строк!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 14.04.2011, 17:22   #5
dima_r
 
Регистрация: 31.03.2011
Сообщений: 9
По умолчанию

Запрос
Код:
SELECT count(*) FROM main 
WHERE sport_id = 1 AND event LIKE 'Какой-то текст'
GROUP BY event_id,event
Тоже выдает ошибку...
Время до вылета ошибки:
4.05 минуты,
3.32,
3.36,
2.42...
----
Может это как-то связано с паматью? Что не хватает ему?
dima_r вне форума Ответить с цитированием
Старый 14.04.2011, 17:40   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

1) явно что бросается в глаза в тексте ддл таблицы есть поле
Цитата:
sports_id int,
а в запросе юзается sport_id
разница в 1 букву

2)
Цитата:
LIKE 'Какой-то текст'
обычно применяется с использованием символов подстановки % или ?
типа такого
Код:
LIKE 'Какой-то текст%'
это существенно облегчает серваку задачу по перебору

3) ну и для полного счастья стоит задуматься над созданием индексов (хотя и тут есть свои подводные камни)

4) ну дык как же выглядит оригинальный текст ошибки?
может у вас просто битый файл базы данных?!
soleil@mmc вне форума Ответить с цитированием
Старый 14.04.2011, 17:47   #7
dima_r
 
Регистрация: 31.03.2011
Сообщений: 9
По умолчанию

1,2 пункты это да... Понятно что было б другое имя поля - выдавало ошибку.. то так... неточности... использую вместо LIKE - =, как советовали выше...
Но суть-то не в этом
Единственное, что мне кажется, так это мож не хватает памяти? 2.5гб оперативки.. хотя насколько я заметил, хавает всю при выполнении запроса...
А по поводу полного текста ошибки... где его брать? Выдает ток это:

Msg 0, Level 11, State 0, Line 0
При выполнении текущей команды возникла серьезная ошибка.. При наличии результатов они должны быть аннулированы.

И файл вродь не битый.. малые запросы выполняет норм, бэкап базы делает норм...
dima_r вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при выполнении запроса(SUM() и GROUP by) к таблице excel. kaval88 Microsoft Office Excel 4 20.02.2011 15:31
Try и except при выполнении запроса с ошибкой Droid БД в Delphi 4 17.04.2010 19:10
Ошибка при выполнении запроса Шани БД в Delphi 4 27.07.2007 13:04
Ошибка при выполнении запроса Elena БД в Delphi 3 14.06.2007 15:13
Ошибка при выполнении запроса Elena БД в Delphi 2 25.05.2007 16:19