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

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

Приложение имеет запрос в формате, подобном "column1" из "table1". Приложение использует базу данных MSSQL. Это приложение раньше нормально работало на сервере Windows 2003 через драйверы ODBC, однако в настоящее время происходит сбой приложения на сервере Windows 2008.

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

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

2 ответа

Согласно MSDN:

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

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

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

Другие вопросы по тегам