Нежелательный 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
и TAdoQuery
Sql 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 или что?