Нежелательный SET NO_BROWSETABLE ON, сгенерированный tadodataset

У меня есть проблема в моем приложении Delphi с tadodataset простой вопрос после переключения с delphi xe2 на xe9 и sql2014 я вижу в профилировщике, что все мои запросы, запущенные с SET NO_BROWSETABLE ON, по этой причине может перекомпилировать хранимые процедуры и функции на сервере sql, может кто-то сказать мне, как я могу отключить эту опцию и пример кода

ADODataSet1.Close; ADODataSet1.CommandText:= 'Выбрать * из mytable'; ADODataSet1.Open;

и результат в профилировщике: SET NO_BROWSETABLE ON Выберите * из mytable

1 ответ

Ваш вопрос, кажется, подразумевает, что SET NO_BROWSETABLE ON началось только после перехода на более новую версию Delphi.

Если это именно то, что вы имеете в виду, я не уверен, что ваши наблюдения верны, по крайней мере, я не могу воспроизвести какую-либо разницу в поведении между приложением, скомпилированным с текущей версией Delphi, XE10 Seattle и Delphi 7 из 15 лет, относящихся к NO_BROWSETABLE.

У меня есть экземпляр Sql Server 2014, работающий на этом компьютере, который является Windows 10 Pro 64-bit. Если я скомпилирую и запущу минимальный проект Delphi Seattle, который делает простой select * from sometable используя TAdoConnection и TAdoQuerySql Server Profiler показывает уровень MDac, отправляющий SET NO_BROWSETABLE ON, как ты. Однако, если я собираю и запускаю точно такой же проект в Delphi 7, я получаю точно такие же операторы, как показано в профилировщике - нет никакой разницы, если приложение скомпилировано в D7 или Сиэтле.

Это с курсором, установленным на clUseClient, SET NO_BROWSETABLE ON не происходит, если я использую clUseServer, Это также не происходит в минимальном приложении DBExpress, использующем TSqlConnection а также TSqlQuery так что, возможно, он также использует серверный курсор.

Смотрите здесь для получения дополнительной информации о NO_BROWSETABLE:

https://support.microsoft.com/en-us/kb/885146

Я использую Microsoft OLE DB Provider for Sql Server, Несмотря на то, что MS считает это устаревшим, у меня всегда было гораздо меньше проблем с этим, чем с их провайдером для ODBC или с тем, который является "собственным клиентом".

Вы также можете взглянуть на этот SO q:

Странное поведение ADO, генерирующее нежелательные NO_BROWSETABLE / установка fmtonly запросов в VB6

Кстати, вы упоминаете "xe9". Вы имеете в виду XE8 или Delphi Seattle или что?

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