|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
Работаем с Oracle через ODBC. С удивлением обнаружил, что запрос реально посылаемый на сервер, сильно отличается от того что видно в SQL View. Причем отличается так плохо, что выполнение занимает до получаса вместо нескольких секунд. Это конечно лечится если сделать запрос pass-through. Но при этом юзеры ворчат на 2 проблемы: во-первых, надо текст запроса править вручную чтобы Oracle его понял - например, заменять везде двойные кавычки на одинарные, и исправлять схема_имятаблицы на схема.имятаблицы. Нет ли способа как-то объяснить этой идиотской приблуде чтобы не коверкала запрос? Пример: SELECT field1, field2 from partitioned_table where field1='ABC' А вот что приходит на сервер: 1.SELECT primary_key from partitioned_table where field1='ABC' 2.SELECT field1, field2 from partitioned_table WHERE primary_key=value1 OR primary_key=value2 OR primary_key=value3 .......OR primary_key=value10 Таблица большая, 50 млн записей. Ждем по пол-часа и затем при любой попытке проскроллить все начинается сначала, еще пол-часа. "Это...какой-то позор!" (с)Швондер ... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 04:07 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90если сделать запрос pass-through. Но при этом юзеры ворчат на 2 проблемы: во-первых, надо текст запроса править вручную чтобы Oracle его понял - например, заменять везде двойные кавычки на одинарные, и исправлять схема_имятаблицы на схема.имятаблицы. не вариант? Код: vbnet 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.12.2017, 09:20 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
bubuchaRTX90если сделать запрос pass-through. Но при этом юзеры ворчат на 2 проблемы: во-первых, надо текст запроса править вручную чтобы Oracle его понял - например, заменять везде двойные кавычки на одинарные, и исправлять схема_имятаблицы на схема.имятаблицы. не вариант? Код: vbnet 1. 2. 3. 4.
Спасибо за очевидное предположение, но нет. Это нужно писать им приложение для Access, да они и не согласятся. Еще проблема что им не нравится, что при pass-through query им нужно вводить credentials каждый раз при запуске запроса. Я интересовался, есть ли в этой приблуде способ повлиять на то, как она трансформирует запрос; как я и подозревал - нет такого способа. И да, я знаю что Access sux, и место ему на помойке. Но это увы вне моей компетенции, а компания по своим внутренним соображениям не разрешает поставить бизнес-юзерам хоть какую-нибудь SQL утилиту :( ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 01:55 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90Это нужно писать им приложение для Access, да они и не согласятся. так а сейчас разве не через акс работают? RTX90Еще проблема что им не нравится, что при pass-through query им нужно вводить credentials каждый раз при запуске запроса. это не проблема акса, это проблема реализации юзер интерфейса авторРаботаем с Oracle через ODBC. ... Таблица большая, 50 млн записей в аксе на линкованых таблицах? о_О ну да...после этого автор... я знаю что Access sux ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 10:06 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
bubuchaRTX90Это нужно писать им приложение для Access, да они и не согласятся. так а сейчас разве не через акс работают? RTX90Еще проблема что им не нравится, что при pass-through query им нужно вводить credentials каждый раз при запуске запроса. это не проблема акса, это проблема реализации юзер интерфейса авторРаботаем с Oracle через ODBC. ... Таблица большая, 50 млн записей в аксе на линкованых таблицах? о_О ну да...после этого автор... я знаю что Access sux Рад что вы посмеялись. Гы-гы. Спасибо за помощь. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2017, 11:08 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90, Акс - прекрасное средство для небольших приложений, а если использовать нормальный SQL сервер в качестве бэкэнда, то работает и для крупных нагруженных проектов, вы зря так о нем отзываетесь. В данном случае у вас неправильный подход к организации взаимодействия пользователей с базой. Непосредственно с таблицами должны работать только разработчики, а не конечные пользователи. Тем более, если речь идет об SQL сервре, к прямым запросам пользователя подпускать нельзя, иначе они могут такого наворотить, что мало не покажется. Работать через линкованные таблицы в аксе, конечно, можно, но так вы большую часть преимуществ SQL сервера - запросы построителя зачастую неэффективные, будут большие потери в скорости в некоторых случаях. Я обычно конструктор и прилинкованные таблицы использую только для облегчения построения основы текста pass-through запроса, пользователи этих запросов не видят вообще. В общем, если хотите перейти на новый уровень, используя SQL сервер, необходимо менять подход к разработке и организации процессов пользователей - как при переходе от Экселя к Акцессу. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2017, 08:09 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
MrShinRTX90, Акс - прекрасное средство для небольших приложений, а если использовать нормальный SQL сервер в качестве бэкэнда, то работает и для крупных нагруженных проектов, вы зря так о нем отзываетесь. В данном случае у вас неправильный подход к организации взаимодействия пользователей с базой. Непосредственно с таблицами должны работать только разработчики, а не конечные пользователи. Тем более, если речь идет об SQL сервре, к прямым запросам пользователя подпускать нельзя, иначе они могут такого наворотить, что мало не покажется. Работать через линкованные таблицы в аксе, конечно, можно, но так вы большую часть преимуществ SQL сервера - запросы построителя зачастую неэффективные, будут большие потери в скорости в некоторых случаях. Я обычно конструктор и прилинкованные таблицы использую только для облегчения построения основы текста pass-through запроса, пользователи этих запросов не видят вообще. В общем, если хотите перейти на новый уровень, используя SQL сервер, необходимо менять подход к разработке и организации процессов пользователей - как при переходе от Экселя к Акцессу. "страшно далеки они от народа". Капитан, вы все верно естественно сказали, но такое ощущение что в большой фирме в суппорте вы никогда не работали и понятия не имеете как оно там. "Большая фирма" это ~300 000 человек. Разумеется, разные отделы и подразделения, но IT политика на _всех_ - одна. Один на всех список разрешенных для установки приложений в зависимости от бизнес-линии. Так вот бизнес-юзеры для ad hoc queries - Ms Acces. Точка. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2017, 13:12 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90, Я знаю, о чем говорю. Я руководил российским ИТ департаменом конторы, в которой сейчас 325000 человек, писал софт по заказу другой фирмы с численностью 200000 человек и других крупных контор, но численность никакого отношения не имеет к процессам и архитектуре каждого конкретного случая. Тем более в крупных отделах нельзя допускать к таблицам никого, кроме разработчиков. В крайних случаях особо продвинутых пользователей можно допускать до создания своих запросов, Акс - неплохое средство, но эффективность реально посылаемых на сервер запросов через линкованные таблицы действительно плохая, а другие средства построения запросов не дают той мощности тех же отчетов, что есть в Аксе. Пусть сторят, что нужно по смыслу, для повышения эффективности дайте пользователям средство конвертации запросов с линкованными таблицами в pass-through, это уже прямая обязанность разработчиков. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2017, 18:23 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90 Так вот бизнес-юзеры для ad hoc queries - Ms Acces. Точка. Что мешает написать на Access-е нормальное клиент-серверное приложение кроме неумения? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2017, 18:31 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
Может пригодится автору топика Разработка на Access клиентских приложений для Oracle ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2017, 22:23 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90, Поумерьте свой апломб и постарайтесь выбирать выражения, здесь технический форум, а не Просто треп или болталка в фейсбуке. Вам ответили, что Акс не может полностью контролировать запросы к серверу, сделали совершенно справедливое предложение написать полноценное клиент-серверное приложение с реализованной бизнес логикой для бизнес пользователей, и не нужно там писать аналог Oracle Discoverer, не раз видел аналогичные решения. Если ваши бизнес процессы предполагают написание прямых запросов к таблицам не разработчиками - это явно указавает на недостаточную компетенцию менеджмента, создавшего их, так делать нельзя. Если считаете, что можно, попробуйте обосновать. Если нужно средство анализа данных, а сертифицированных средств не хватает - пробейте сертификацию и закупку подходящего софта, например какого-нибудь BI, там все заточено под серверы, пусть крутят данные как угодно в построителях ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 07:24 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
JossМожет пригодится автору топика Разработка на Access клиентских приложений для Oracle Этот хотя бы погуглил и кинул первую попавшуюся ссылку 2005 года. Сам-то видел что там внутри? Там внутри советы для чайников как соединиться с Oracle и основы синтаксиса SQL. Вопрос к специалистам - есть какой-то способ при использовании pass-through запросов сделать так, чтобы не нужно было вводить credentials при каждом открытии запроса? Хранение пароля в открытом текстовом виде не предлагать. Вообще Jet Engine это вещь в себе, пользователи например сами нашли сопособ - после того как запрос сконструирован, нужно клинуть на кнопку Totals в результате добавляется group by по каждому полю, и в результате почему-то запрос приходит на сервер уже _без_ идиотических изменений, как есть. Ну и выполняется вместо получаса за каких-то 15 минут. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 12:19 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90, реестр для тебя "открытый текстовый вид" ? вдруг "нет", тогда - DSN ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 12:35 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90, товарищ, здесь большинство каждый день на работе занимается именно разработкой таких приложений. Когда-то все этого делать не умели. Так что замечание "что мешает кроме неумения" остается в силе. Ваш оскорбленный тон отношу к тому же незнанию/неумению. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 12:40 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
DSN,RTX90, реестр для тебя "открытый текстовый вид" ? вдруг "нет", тогда - DSN И то и другое модифицировать не имеем права. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 12:49 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
Ответ по делу вы уже давно получили. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 12:58 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90DSN,RTX90, реестр для тебя "открытый текстовый вид" ? вдруг "нет", тогда - DSN И то и другое модифицировать не имеем права.я про "одно" говорил - системный DSN в реестре Что ты там "другое" увидел ? Покажи настройки ODBC Может у тебя там трассировка включена ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:10 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
DSN,RTX90пропущено... И то и другое модифицировать не имеем права.я про "одно" говорил - системный DSN в реестре Что ты там "другое" увидел ? Покажи настройки ODBC Может у тебя там трассировка включена ? Нет, трассировка не включена. Вообще по сути проблема в том, что раньше юзеры как-то справлялись. Но на днях сверху проапгрейдили драйвер ODBC и всё встало колом. Как же они нас замучали своими апгрейдами, особенно жабой. Только-только все настроишь, приноровишься - бац, ночью все проапгрейдили, ничего не работает. Начинаешь слать запросы на предоставление административных прав на своей машине, куча аппрувалов, объяснительные, наконец дают на 2 дня, начинаешь опять все приводить в порядок...до следующего апгрейда:( ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:20 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90Работаем с Oracle через ODBC. С удивлением обнаружил, что запрос реально посылаемый на сервер, сильно отличается от того что видно в SQL View. Причем отличается так плохо, что выполнение занимает до получаса вместо нескольких секунд. Это конечно лечится если сделать запрос pass-through. Но при этом юзеры ворчат на 2 проблемы: во-первых, надо текст запроса править вручную чтобы Oracle его понял - например, заменять везде двойные кавычки на одинарные, и исправлять схема_имятаблицы на схема.имятаблицы. Нет ли способа как-то объяснить этой идиотской приблуде чтобы не коверкала запрос? Пример: SELECT field1, field2 from partitioned_table where field1='ABC' А вот что приходит на сервер: 1.SELECT primary_key from partitioned_table where field1='ABC' 2.SELECT field1, field2 from partitioned_table WHERE primary_key=value1 OR primary_key=value2 OR primary_key=value3 .......OR primary_key=value10 Таблица большая, 50 млн записей. Ждем по пол-часа и затем при любой попытке проскроллить все начинается сначала, еще пол-часа. "Это...какой-то позор!" (с)Швондер Когда открываете обычный запрос на выборку данных Access пытается открыть его в обновляемом виде. Т.е. данные в запросе можете редактировать словно открыли обычную таблицу. Я так предполагаю именно поэтому Access находит значение первичного ключа и переделывает запрос по своему. Если и в правду у Вас 50 млн. записей, ну тогда запрос к серверу однозначно. А что касается переделки текста запроса на синтаксис Oracle, ну так создайте простую формочку с 2-мя полями "старый текст" и "новый текст". Пусть пользователи ставят старый текст и нажимают на кнопку, а форма пусть превращает SQL текст на понятный для Oracle скрипт. Один раз помучаетесь с кодом, но потом всё должно получиться. Я лично на стороне Oracle создал множество процедур, а по нажатию кнопки выходит форма для ввода параметров (для фильтра данных), пользователь как только заполняет параметры и нажимает на ОК, программа переделывает текст запроса к серверу и открывает его. Пользователи ничего не правят. Вот и всё! Вам лучше всего переделать все запросы именно так. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:36 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
studierenRTX90Работаем с Oracle через ODBC. С удивлением обнаружил, что запрос реально посылаемый на сервер, сильно отличается от того что видно в SQL View. Причем отличается так плохо, что выполнение занимает до получаса вместо нескольких секунд. Это конечно лечится если сделать запрос pass-through. Но при этом юзеры ворчат на 2 проблемы: во-первых, надо текст запроса править вручную чтобы Oracle его понял - например, заменять везде двойные кавычки на одинарные, и исправлять схема_имятаблицы на схема.имятаблицы. Нет ли способа как-то объяснить этой идиотской приблуде чтобы не коверкала запрос? Пример: SELECT field1, field2 from partitioned_table where field1='ABC' А вот что приходит на сервер: 1.SELECT primary_key from partitioned_table where field1='ABC' 2.SELECT field1, field2 from partitioned_table WHERE primary_key=value1 OR primary_key=value2 OR primary_key=value3 .......OR primary_key=value10 Таблица большая, 50 млн записей. Ждем по пол-часа и затем при любой попытке проскроллить все начинается сначала, еще пол-часа. "Это...какой-то позор!" (с)Швондер Когда открываете обычный запрос на выборку данных Access пытается открыть его в обновляемом виде. Т.е. данные в запросе можете редактировать словно открыли обычную таблицу. Я так предполагаю именно поэтому Access находит значение первичного ключа и переделывает запрос по своему. Если и в правду у Вас 50 млн. записей, ну тогда запрос к серверу однозначно. А что касается переделки текста запроса на синтаксис Oracle, ну так создайте простую формочку с 2-мя полями "старый текст" и "новый текст". Пусть пользователи ставят старый текст и нажимают на кнопку, а форма пусть превращает SQL текст на понятный для Oracle скрипт. Один раз помучаетесь с кодом, но потом всё должно получиться. Я лично на стороне Oracle создал множество процедур, а по нажатию кнопки выходит форма для ввода параметров (для фильтра данных), пользователь как только заполняет параметры и нажимает на ОК, программа переделывает текст запроса к серверу и открывает его. Пользователи ничего не правят. Вот и всё! Вам лучше всего переделать все запросы именно так. Остается нерешеным вопрос - как сделать чтобы не логиниться по-новой при каждом открытии запроса? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:38 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90... Остается нерешеным вопрос - как сделать чтобы не логиниться по-новой при каждом открытии запроса? А это совсем не проблема! Откройте запрос к серверу в режиме конструктора, нажимаете Alt + Enter, после чего выходит окно "Свойство запроса". Там есть пункт "Строка подключения ODBC" (ODBCConnectStr Property), вот там по умолчанию выходит просто "ODBC", а надо писать что-то вроде этого "ODBC;DSN=Вот тут название DSN". И всё! ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:49 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
RTX90Остается нерешеным вопрос - как сделать чтобы не логиниться по-новой при каждом открытии запроса? "Строка подключения ODBC" запроса к серверу можно устанавливать программно, перед запуском запроса Код: vbnet 1. 2. 3. 4. 5. 6.
1-ый вариант, конечно, лучше и надёжнее. Это то что я предлагал сразу. Тогда и программно не нужно было бы ничего делать. Был бы прописан DSN один раз и всё. По в.2 - нужно где-то хранить строку подключения. Можно в лок.таблице Акцесса, в зашифрованном виде, если сильно нужно скрыть пароль. Или в свойстве Акс-базы. Или в юзерской ветке реестра. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 13:57 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
Модератор: Почистил. Товарищ RTX90. Пришли спрашивать совета, по крайней мере обойдитесь без хамства. Я не говорю даже об элементарной вежливости. Обратите внимание, что на профильном форуме на вас самих не спустили собак за "Access sux". Если ваша цель не поискать собеседника, возможно решавшего подобную проблему, а пошуметь и потопать ногами, то форум будет избавлен от вашего присутствия ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2017, 14:33 |
|
Есть ли способ контролировать запрос, генерируемый к внешней базе?
|
|||
---|---|---|---|
#18+
GeoМодератор: Почистил. Товарищ RTX90. Пришли спрашивать совета, по крайней мере обойдитесь без хамства. Я не говорю даже об элементарной вежливости. Обратите внимание, что на профильном форуме на вас самих не спустили собак за "Access sux". Если ваша цель не поискать собеседника, возможно решавшего подобную проблему, а пошуметь и потопать ногами, то форум будет избавлен от вашего присутствия Уважаемый, ваши товарищи все под Тамбовом. Я задавал технический вопрос, а меня начали по-хамски поучать, я ответил. Вы, я вижу, поддерживаете местное хамство. Чтож, ваше право. Оргазмируйте от своей "власти". Можете банить, завести новый аккаунт дело двух минут. Собственно, уже завёл. Единственный пользователь studieren начал дискуссию по существу, ему я благодарен. ... |
|||
:
Нравится:
Не нравится:
|
|||
19.12.2017, 02:51 |
|
|
start [/forum/topic.php?fid=45&msg=39571415&tid=1611858]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
47ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 504ms |
total: | 651ms |
0 / 0 |