Your question seems to imply that the SET NO_BROWSETABLE ON
has only started since changing to a more recent Delphi version.
If that is what you mean, I am not sure your observation is accurate, at least I cannot reproduce any difference in behaviour between an app compiled with the current Delphi version, XE10 Seattle and Delphi 7 from 15 years go regarding NO_BROWSETABLE.
I have an instance of Sql Server 2014 running on this machine, which is Windows 10 Pro 64-bit. If I compile and run a minimal Delphi Seattle project that does a simple select * from sometable
using a TAdoConnection
and a TAdoQuery
, Sql Server's Profiler shows the MDac layer sending a SET NO_BROWSETABLE ON
, like you. However, if I compile and run exactly the same project in Delphi 7, I get exactly the same statements shown in the profiler - there is no difference whatsoever if the app is compiled in D7 or Seattle.
This is with the cursor location set to clUseClient
. The SET NO_BROWSETABLE ON
doesn't occur if I use clUseServer
. It also doesn't occur in a minimal DBExpress application using a TSqlConnection
and TSqlQuery
so maybe that uses a server-side cursor as well.
See here for more info about NO_BROWSETABLE
:
https://support.microsoft.com/en-us/kb/885146
I'm using the Microsoft OLE DB Provider for Sql Server
. Although this is said to be deprecated by MS, I've always had far less trouble with it than with their provider for ODBC or that "native client" one.
You also might want to take a look at this SO q:
Strange ADO behavior generating unwanted NO_BROWSETABLE / set fmtonly queries in VB6
Btw you mention "xe9". Do you mean XE8 or Delphi Seattle or what?