|
|
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Решил попробовать базу, которая работает под ASA 8 запустить под ASA 9. Сходу наступил на пару граблей, обе на запросе Код: plaintext 1. 2. 3. 4. 5. 6. 7. Во-вторых матюкается на null value в аггрегатной функции, но это как раз точно лечится через allow_nulls_by_default, но в связи с этим вопрос можно ли как то эту настройку указать в командной строчке при запуске сервера? Какие еще подводные камни можно ожидать при переходе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 11:56 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin пишет: > Решил попробовать базу, которая работает под ASA 8 запустить под ASA 9. > Сходу наступил на пару граблей Это же надо уметь... я под переход 8 -> 9 и 9 -> 10 не правил вообще ничего ;). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:31 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Dim2000, молодец, а по теме что-то сказать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 12:36 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin пишет: > а по теме что-то сказать? При переходе никаких граблей не обнаружено. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:06 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Берем раздел "Что нового" от девятки. Читаем, думаем, смотрим в свой код на восьмерке, меняем, переделываем. Все остальное - при тестировании под 9 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:44 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Dim2000, а как обойти то что я описал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:44 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Опцией tsql_outer_joins у меня лечится при переходе с 7 на 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 13:47 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
antand пишет: > Опцией tsql_outer_joins у меня лечится при переходе с 7 на 11. Она тут вообще не при чём. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 14:15 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 16:21 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinВо-первых не хочет понимать соединение через where, когда меняю на inner join всё работает, вычитал, что вроде должно лечится через настройку tsql_outer_joins - не лечится. Во-вторых матюкается на null value в аггрегатной функции, но это как раз точно лечится через allow_nulls_by_default, но в связи с этим вопрос можно ли как то эту настройку указать в командной строчке при запуске сервера? 1. Бред. Что значит не хочет понимать. Приведите текст запроса и ответ сервера. 2. Это вроде от того, что клиента используете старого. Сервак шлет предупреждение. Девяточный клиент нормально их обрабатывает, те клиенты, которые ниже версией, выводят его как ошибку. Уже писал когда-то на форуме, могли бы в поиске найти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2010, 19:07 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Sergey Orlovamakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... Боюсь что этот вариант не подойдет, запрос в процедуре, когда я запускаю альтер, то всё сохраняется на-ура, а при исполнении вылезает ошибка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 16:52 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer 1. Бред. Что значит не хочет понимать. Приведите текст запроса и ответ сервера. 2. Это вроде от того, что клиента используете старого. Сервак шлет предупреждение. Девяточный клиент нормально их обрабатывает, те клиенты, которые ниже версией, выводят его как ошибку. Уже писал когда-то на форуме, могли бы в поиске найти. 1. Запрос уже привел, что там еще привести??? ответ сервера "illegal reference to correlation name t1" замена запроса на Код: plaintext 1. 2. 3. 4. 5. 6. 2. Да, клиент это и не видит как ошибку, но в 8-ке даже предупреждения не было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 17:01 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, 1. Не держите людей за дураков. Я не просто так написал приведите текст запроса. На Ваш запрос мой сервер выдает ошибку "Syntax error near '.' on line 1". Уверяю, что соединение таблиц через WHERE в 9-ке работает на ура. И чтобы Вас ткнуть носом нужен полный текст запроса, а не Ваша интерпретация его. Illegal reference к примеру может означать, что Вы пытаетесь в условии по левому соединению table3 использовать поля из table1. Это говорит только о некорректности написания запроса, и то, что он работал раньше где-то, говорит скорее о фичи/баге той версии, чем о недоработке в этой. Старый оптимизатор не видел двусмысленности и глотал все что суют, а новый - видит. Писать запросы изначально нужно корректно, по стандарту, и никаких проблем не будет. 2. Под клиентом я подразумевал именно драйвер, установленный на клиенте(в случае ODBC соединения). Нужно глядеть его версию. Вы написали, что там у Вас грабли. Грабли, я понимаю как нарушение алгоритмики работы имеющегося ПО. Так вот, если Ваша программа спокойно работает и ничего не видит, то не вижу проблем. Если же Ваша программа встает в раскоряку из-за неспособности драйвера корректно обработать эту ситуацию, то обновите сабейзовского клиента, тогда в Вашей программе не будет нарушена алгоритмика работы, и после запроса она не будет уходить в исключение. Если трогать "allow_nulls_by_default", то это может аукнуться совершенно в другой степи, т.к. 9-ка и 6/7/8-ка по умолчанию работают одинаково, а вот с этой опцией 9-ка будет работать уже не как 6/7/8-ка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:04 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:19 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, вы правы, если я меняю местами таблицы, то начинает работать. Но до сих пор не совсем понимаю какое имеет значение порядок таблиц в from. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 18:26 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhiniLLer, вы правы, если я меняю местами таблицы, то начинает работать. Но до сих пор не совсем понимаю какое имеет значение порядок таблиц в from. Судя по запросу, там именно то, что я и предположил. Проблема в том, что использование левого соединения подразумевает что в его условии используются только поля из соединяемых таблиц. Ссылаясь в условии левого соединения на третью свободную таблицу (t), сервер хочет вынести это условие на уровень выше, где t и подсоединяется к другим таблицам, т.е. на where запроса, но в этом случае пропадает смысл левого соединения, потому он и не может вынести. Указание в явном виде сначала соединения t и l по условию "t.LicNum = l.LicNum" дает право при подсоединении слева FinTreat в условии использовать ссылки на обе таблицы и на t и на l. Проблема не в порядке следования таблиц во from, а в том, что к чему подсоединяется и как это указывается. Три таблицы можно пересечь множеством способов и получить иное множество различных результатов. From - это не мясорубка. В Вашем случае есть два правильных варианта: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Если бы подключение таблицы ft требовало ссылок и на t и на l, то прошел бы только второй вариант. P.S.: Остается один вопрос. В чем сакраментальный смысл левого подсоединения, если по этой таблице берется сумма и только сумма? Там оно совершенно не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 20:19 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, спасибо за подробное объяснение, я понял логику работы. Честно говоря, нельзя сказать что она прозрачна. Т.е., да по вашему объяснению все логично, но тем не менее нигде до этого не встречал разбора работы сайбейзовского селекта, хотя я с ASA знаком можно сказать поверхностно. Я бы мог предболожить что оптимизатор сделает full join из таблиц во from, потом приложит к ним left join и условия из where. В таком случае прошёл бы и мой первый вариант. (И почему-то уверен что он пройдёт в MS SQL хотя надо проверить) Сейчас я этот запрос и написал бы по вашему второму варианту, даже не зная подноготной работы оптимизатора, но этому коду уже лет 8, так что может и простительно. По поводу автор В чем сакраментальный смысл левого подсоединения, если по этой таблице берется сумма и только сумма? Там оно совершенно не нужно. А если в таблице fintreat не окажется ни одной записи для сущности из MaxInsur, то разве при inner join мы не потеряем эту запись из этой таблицы? PS есть ли какой-то запрос позволяющий вывести текст всех хранимых процедур из базы? PPS обнаружил что функции REWRITE тоже не нравится мой вариант, напишу наверно какой-то запрос или цикл с этой функцией по всем процедурам чтобы проверить их работоспособность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 22:38 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
уже обнаружил что тут работает sp_helptext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 22:40 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin А если в таблице fintreat не окажется ни одной записи для сущности из MaxInsur, то разве при inner join мы не потеряем эту запись из этой таблицы? Потеряем. А разве потеряные строки смогут что-то изменить в Sum(ft.Finance), если в их случае ft.Finance is null, и они и так пролетят мимо кассы?!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 23:24 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
iLLer, насколько я помню логику программы там основная задача вывести полный список из MaxInsur, a соединение с FinTreat похоже было добавлено позже для добавочной информативности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2010, 23:32 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinпочему-то уверен что он пройдёт в MS SQL Ну вообще-то мы сейчас обсуждаем ASA, причём тут MSSQL ;)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 00:49 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhin, Ну раз это нужно, значит надо с левым подсоединением. Только нужно экранировать Sum(isnull(ft.Finance,0)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 08:51 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
amakhinSergey Orlovamakhin, Боюсь что не лечится оптимизатор другой, ты лучше выгрузи структуру базы в sql-скрипт и попробуй загрузить в 9-ку, там сразу и вылезят несовместимости... Боюсь что этот вариант не подойдет, запрос в процедуре, когда я запускаю альтер, то всё сохраняется на-ура, а при исполнении вылезает ошибка. Я же сказал оптимизатор разный, кстати, если делать alter, то ничего не происходит, а вот если удалить, а затем создать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.02.2010, 18:08 |
|
||
|
ASA 8 -> ASA 9
|
|||
|---|---|---|---|
|
#18+
Sergey Orlov Я же сказал оптимизатор разный, кстати, если делать alter, то ничего не происходит, а вот если удалить, а затем создать... ....то тоже ничего не происходит. Как выявить такие запросы я написал выше. Кстати про разный оптимизатор это понятно, но это не ответ. Синтаксически запрос был правильный. Или всё таки кто-то знает место в документации описывающее эту особенность? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2010, 21:55 |
|
||
|
|

start [/forum/topic.php?fid=55&fpage=31&tid=2010745]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
42ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 229ms |
| total: | 385ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...