2

我在使用 tadodataset 的 delphi 应用程序中遇到问题 从 delphi xe2 切换到 xe9 和 sql2014 后的简单问题 我在分析器中看到我的所有查询都以 SET NO_BROWSETABLE ON 开始,这导致重新编译 sql server 中的存储过程和函数有人可以告诉我如何禁用此选项和示例代码

ADODataSet1.关闭;ADODataSet1.CommandText := 'Select * from mytable'; ADODataSet1.打开;

并导致分析器: SET NO_BROWSETABLE ON Select * from mytable

4

1 回答 1

2

您的问题似乎暗示SET NO_BROWSETABLE ON自从更改为更新的 Delphi 版本后才开始。

如果这就是你的意思,我不确定你的观察是否准确,至少我无法重现使用当前 Delphi 版本、XE10 Seattle 和 Delphi 7 编译的应用程序在 15 年关于 NO_BROWSETABLE 的行为上的任何差异。

我有一个在这台机器上运行的 Sql Server 2014 实例,它是 Windows 10 Pro 64 位。如果我编译并运行一个select * from sometable使用 aTAdoConnection和 a进行简单操作的最小 Delphi Seattle 项目TAdoQuery,Sql Server 的 Profiler 会显示 MDac 层发送 a SET NO_BROWSETABLE ON,就像你一样。但是,如果我在 Delphi 7 中编译并运行完全相同的项目,我会得到与分析器中显示的完全相同的语句 - 如果应用程序是在 D7 或西雅图编译的,则没有任何区别。

这是将光标位置设置为clUseClient。如果SET NO_BROWSETABLE ON我使用clUseServer. 它也不会出现在使用 a 的最小 DBExpress 应用程序中TSqlConnectionTSqlQuery因此也可能使用服务器端游标。

有关以下信息的更多信息,请参见此处NO_BROWSETABLE

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

我正在使用Microsoft OLE DB Provider for Sql Server. 尽管据说这已被 MS 弃用,但与他们的 ODBC 提供商或“本机客户端”提供商相比,我遇到的麻烦总是少得多。

您可能还想看看这个 SO q:

在 VB6 中生成不需要的 NO_BROWSETABLE / 设置 fmtonly 查询的奇怪 ADO 行为

顺便说一句,你提到“xe9”。你的意思是 XE8 或 Delphi Seattle 还是什么?

于 2016-02-25T16:41:16.057 回答