09.01.2013, 14:11 | #1 |
Участник
|
Странное поведение запроса
Имеется запрос (tab2 - это вьюха):
X++: SELECT tab1 where tab1.RecId == 5637243234 OUTER JOIN tab2 WHERE tab1.Draft == tab2.Draft && tab1.Account == tab2.Account Но если включить трассировку запросов и перехватить SQL запрос и выполнить его непосредственно в MS SQL Server - то данные из tab2 нормально выбираются. Почему такое может быть? |
|
09.01.2013, 15:01 | #2 |
Участник
|
Синхронизация, реиндексация, обновление статистики?
|
|
09.01.2013, 15:11 | #3 |
Участник
|
не помогает
|
|
09.01.2013, 15:30 | #4 |
Участник
|
попробуйте по очередно закоментировать условия в Where (возможно что то условиях выборки)
WHERE tab1.Draft == tab2.Draft && tab1.Account == tab2.Account |
|
09.01.2013, 15:42 | #5 |
Участник
|
Физически, на SQL-сервере выполняется не запрос, а Fetch специально созданного курсора. Поэтому если Вы хотите проверить, что именно выполняется на MS SQL, то Вам надо "обернуть" запрос в курсор. Примерно так
X++: DECLARE cursor1 CURSOR FOR SELECT * from tab1 (...) OPEN cursor1 FETCH NEXT FROM cursor1 CLOSE cursor1 DEALLOCATE cursor1
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
11.01.2013, 09:44 | #6 |
Участник
|
|
|
11.01.2013, 09:57 | #7 |
Участник
|
|
|
11.01.2013, 10:06 | #8 |
Участник
|
Вскрылась еще одна странная вещь...во вьюхе tab2 24 поля. среди них есть 2 поля размерностью строки 512.
если запрос модернизировать следующим образом, и в <список полей> не указывать эти 2 поля - то запрос прекрасно отрабатывает, если в выборку включить эти 2 поля - то данные из tab2 опять перестают выбираться X++: SELECT tab1 where tab1.RecId == 5637243234 OUTER JOIN < > from tab2 WHERE tab1.Draft == tab2.Draft && tab1.Account == tab2.Account |
|
11.01.2013, 11:02 | #9 |
Участник
|
Попробуйте создать новую вьюху, которая включает только те поля и таблицы, которые нужны именно вам. Думаю и размер будет поменьше, и скорость повыше, да и проблемы исчезнут.
__________________
// no comments |
|
11.01.2013, 11:44 | #10 |
Участник
|
Дело в том, что мне все поля из этой вьюхи нужны...
еще такой момент если записи из вьюхи закачать в таблицу то запрос начинает отрабатывать без проблем |
|
11.01.2013, 11:54 | #11 |
Участник
|
А какая у вас версия Аксапты и MSSQL?
|
|
11.01.2013, 12:02 | #12 |
Участник
|
DAX 5.0 MS SQL SERVER 2008 R2
|
|
11.01.2013, 12:46 | #13 |
Участник
|
А если из въюхи закачивать во временную таблицу и с ней работать? Не подходит?
|
|
11.01.2013, 15:15 | #14 |
Участник
|
Не такой вариант не подходит...дело в том, что приведенный запрос это упрощенная ситуация. На самом деле tab1 и tab2 это 2 DataSource на форме, связанные по outer join, и результирующий набор данных должен выводиться в один грид. А временную таблицу в таком случае использовать нельзя.
|
|
11.01.2013, 19:09 | #15 |
Участник
|
Может быть глупый вопрос, но всё-таки: без вьюхи обойтись нельзя? Делай выборку из 2-х таблиц только, если так работает.
Вести работу с неявными табличными переменными на форме, если говориться, что Tab1 && Ефи2 - DataSource =\ |
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|