spSearchOnAllDB от Глеба Уфимцева...

Berg
Дата: 10.10.2003 17:23:40
Наверняка, кто-то использовал/ет, помогите, пожалуйста.
Запустил сабж...Работает. Типа все ОК, но при пуске из QA выдается:

Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'INDEX'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ')'.
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'Top'.
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'INDEX'.

Но Level = 15, и результат нормально выдается в гриде...Но вот мой клиент (через ADO работает) выдает "Incorrect syntax near the keyword 'INDEX' " и до свидания...:-(
Почему он считает это фатальной ошибкой?

Как бы результаты на клиенте поиметь-таки...

И попутно:
Зачем в конце exec('select * from #tbl_res order by 1,2,3'),
а не простое select * from #tbl_res order by 1,2,3?

Ведь при exec() результат на клиента не идет...Или я чего-то не понимаю?

P.S. http://www.gvu.newmail.ru/sp_search_on_all_db.zip - вот текст той процы...
Glory
Дата: 10.10.2003 23:00:58
Ведь при exec() результат на клиента не идет...Или я чего-то не понимаю?

Почему не идет ??? Очень даже идет.
ziktuw
Дата: 13.10.2003 15:02:23
автор писал:
Наверняка, кто-то использовал/ет, помогите, пожалуйста.
Запустил сабж...Работает. Типа все ОК, но при пуске из QA выдается:

Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'INDEX'.
Server: Msg 170, Level 15, State 1, Line 1
Line 1: Incorrect syntax near ')'.
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'Top'.
Server: Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'INDEX'.


Так как подстроки "INDEX" нету в теле этой процедуры, значит, дело в конкретных значениях ваших параметров. Разобраться в этом без озвучивания этих параметров невозможно.

автор писал:
Но Level = 15, и результат нормально выдается в гриде...Но вот мой клиент (через ADO работает) выдает "Incorrect syntax near the keyword 'INDEX' " и до свидания...:-(
Почему он считает это фатальной ошибкой?


Вовсе не фатальная. Просто клиент сгенерировал исключение на первой же ошибке. Такая особенность, значит, у этого клиента. Дельфовые ADO-компоненты, например, такое любят учинять.

автор писал:
Как бы результаты на клиенте поиметь-таки...


Не вопрос. Надо посмотреть ваши параметры, понять почему дин. запросы с ними дают синтаксическую ошибку и исправить её.

автор писал:
Зачем в конце exec('select * from #tbl_res order by 1,2,3'),
а не простое select * from #tbl_res order by 1,2,3?


Соображение очень простое. Поскольку вывод этого селекта должен производиться не всегда, а по некоему условию (там IF стоит), то для оптимизации производительности желательно, чтобы план для этого селекта строился только "когда надо", т.е. в момент употребления. Хотя, в принципе, практически это неважно. Есть еще соображение, что данный селект рудиментарный от более сложного, для которого было трудно обойтись без дин. запроса.

автор писал:
Ведь при exec() результат на клиента не идет...Или я чего-то не понимаю?


Идет нормально.
Berg
Дата: 13.10.2003 16:14:48
2Dankov:

> Так как подстроки "INDEX" нету в теле этой процедуры, значит, дело в
> конкретных значениях ваших параметров. Разобраться в этом без
> озвучивания этих параметров невозможно.

После локализации места выяснилось, что вышеуказанные ошибки возникали ввиду наличия в одной из таблиц столбца INDEX (поубивал бы некоторых)

> Вовсе не фатальная. Просто клиент сгенерировал исключение на первой же
> ошибке. Такая особенность, значит, у этого клиента. Дельфовые
> ADO-компоненты, например, такое любят учинять.
Под фатальной я имел ввиду, что клиент отваливается...Просто прочтения BOL насчет severity я подумал, что она не должна сыпаться...Или где поставить, чтобы т.н. "errors that can be corrected by the user" до 16-го уровня не вызывали аута?

> Не вопрос. Надо посмотреть ваши параметры, понять почему дин. запросы с > ними дают синтаксическую ошибку и исправить её.
Теперь все работает...Нашлась ошибка после нормальных пусков процы на другой базе...А запросы-то все правильные были (думаю, что ей и до меня люди пользовались, ибо проца действительно симпотичная)

> Соображение очень простое. Поскольку вывод этого селекта должен
> производиться не всегда, а по некоему условию (там IF стоит), то для
> оптимизации производительности желательно, чтобы план для этого селекта
> строился только "когда надо", т.е. в момент употребления. Хотя, в принципе,
> практически это неважно. Есть еще соображение, что данный селект
> рудиментарный от более сложного, для которого было трудно обойтись без
> дин. запроса.
Спасибо за разъяснение. Просто я еще новичек, и до "такой" оптимизации еще не добрался...

>> автор писал:
>> Ведь при exec() результат на клиента не идет...Или я чего-то не понимаю?
> Идет нормально.
Это меня что-то проглючило тогда...Действительно идет...

P.S. Еще раз большое спасибо всем за внимание к моей проблеме.