我在使用tadodataset的delphi应用程序中遇到问题 从delphi xe2切换到xe9和sql2014之后的简单问题 我在profiler中看到我的所有查询都以SET NO_BROWSETABLE开始这个导致重新编译sql server中的存储过程和函数 可以有人告诉我如何禁用此选项 和示例代码
ADODataSet1.Close; ADODataSet1.CommandText:='选择*来自 MYTABLE&#39 ;; ADODataSet1.Open;
并导致分析器: 设置NO_BROWSETABLE ON 从mytable
中选择*答案 0 :(得分:2)
您的问题似乎暗示SET NO_BROWSETABLE ON
仅在更改为更新的Delphi版本后才开始。
如果这就是你的意思,我不确定你的观察是否准确,至少我不能重现使用当前Delphi版本编译的应用程序,XE10西雅图和Delphi 7从15年开始的行为与NO_BROWSETABLE之间的任何行为差异。
我在这台机器上运行了一个Sql Server 2014实例,它是Windows 10 Pro 64位。如果我编译并运行一个使用select * from sometable
和TAdoConnection
执行简单TAdoQuery
的最小Delphi Seattle项目,则Sql Server的Profiler会显示MDac层发送{{1 }}, 喜欢你。但是,如果我在Delphi 7中编译并运行完全相同的项目,我会得到与探查器中显示的完全相同的语句 - 如果应用程序是在D7或西雅图编译的,则没有任何区别。
将光标位置设置为SET NO_BROWSETABLE ON
。如果我使用clUseClient
,则SET NO_BROWSETABLE ON
不会发生。它也不会在使用clUseServer
和TSqlConnection
的最小DBExpress应用程序中出现,所以也许它也使用服务器端游标。
有关TSqlQuery
的详细信息,请参阅此处:
https://support.microsoft.com/en-us/kb/885146
我正在使用NO_BROWSETABLE
。虽然据说MS已经弃用了这个版本,但我的错误总是比它们的ODBC提供商或者本地客户端"之一。
你也可能想看看这个SO q:
Strange ADO behavior generating unwanted NO_BROWSETABLE / set fmtonly queries in VB6
你提到" xe9"。你的意思是XE8或Delphi Seattle还是什么?