Проблема с цитируемым идентификатором в приложении Power Builder

Приложение Power Builder 11 сталкивается с проблемами с запросами БД через драйвер ODBC на сервере Windows 2008. Ниже приведены подробности.

Приложение имеет запрос в формате, подобном выберите "столбец1" из "таблицы1" . Приложение использует базу данных MSSQL. Раньше это приложение нормально работало на сервере Windows 2003 через драйверы ODBC, однако теперь приложение не работает на сервере Windows 2008.

После подробного анализа я обнаружил, что запрос не выполняется через драйвер ODBC на сервере Windows 2008 из-за форматирования идентификатора в кавычках. Я пытался изменить атрибут quoted_identifier, но это не помогает. Когда я удаляю кавычки " из запроса, он работает нормально, однако практически невозможно внести такие изменения, поскольку приложение имеет тысячи таких запросов. И в 2003, и в 2008 году используются разные драйверы SQL, однако внутренняя база данных остается прежней. .

Я не могу обновить атрибут цитируемого идентификатора в базе данных, так как он используется другими системами. Пожалуйста, предложите, как это можно исправить с помощью приложения или драйверов ODBC.


person Niket Agrawal    schedule 03.07.2015    source источник


Ответы (2)


Согласно MSDN:

Драйвер ODBC для SQL Server и поставщик Microsoft OLE DB для SQL Server автоматически устанавливают для QUOTED_IDENTIFIER значение ON при подключении. Это можно настроить в источниках данных ODBC, в атрибутах соединения ODBC или в свойствах соединения OLE DB. SET QUOTED_IDENTIFIER по умолчанию имеет значение OFF для подключений из приложений DB-Library.

Вы пробовали изменить строку подключения?

person Matt Balent    schedule 04.07.2015

Я решил проблему сейчас. Мое приложение было разработано на PB9.0, и когда мы переместили приложение с сервера Win2003 на сервер Win2007, система перестала отображать операторы назначения в приложении. Я пробовал все возможные варианты, такие как цитируемый идентификатор, изменения DLL и т. д., но ничего не получалось. В конце я написал программу, которая переключает операторы присваивания в обычный режим, т.е. преобразует c+=A в C = C + A. Как только я сделал такие изменения для всех арифметических операторов присваивания, мое приложение заработало нормально.

person Niket Agrawal    schedule 12.10.2015