1

TADOQuery在 Windows XP 和 Windows7 操作系统上的 Delphi 7 中的组件出现了奇怪的行为。以下问题在 Windows7 操作系统上运行良好,但在 XP 操作系统上出现错误。

让我解释一下这个场景,我有一个 TADOConnection 组件和两个 TADOQuery 组件。TADOConnection 组件的ConnectionString属性值如下:

ADOConnection1.ConnectionString := 'Provider = MSDASQL.1; Password = My Password; User ID = My User ID; Data Source = My Data Source';

我已经将角色/授予的权限应用于我登录到应用程序的用户 ID/密码。

Connection我已经使用属性将 TADOConnection 组件连接到 TADOQuery 组件。

当我执行第一个 sql 时,它可以正常工作,没有任何错误,但是当我执行第二个 sql 时,我在 Windows XP 操作系统上遇到以下错误。

[Microsoft] [SQL Server Native Client 10.0] [SQL Server] 对对象“我的表名”、数据库“我的数据库名”、架构“dbo”的 SELECT 权限被拒绝

如果我在 Windows7 操作系统上执行相同的代码,它可以正常工作,没有任何错误。

任何人都可以关注可能缺少的内容或可能是什么问题吗?


我添加了“Persist Security Info = False;” 连接字符串如下:

ADOConnection1.ConnectionString := 'Provider = MSDASQL.1; Persist Security Info = False; Password = My Password; User ID = My User ID; Data Source = My Data Source';

现在,每当我使用 TADOQuery 组件执行 sql 时,我每次都需要编写以下语句,即使我在开始时已经设置了 TADOQuery 的“Connection”属性,但每次执行 sql 时仍然需要设置该属性。

ADOQuery1.Connection := ADOConnection1; 

但正如我所说,在 Windows7 上,无需更改 TADOConnection 组件的“ConnectionString”属性,也无需设置任何 TADOQuery 组件的“Connection”属性。

任何人都可以告诉你究竟要做什么?

如果您的应用程序太大并且需要在很多地方进行编码更改,有人会同意吗?那么测试工作呢?在所有地方都必须进行测试,对吗?

所以,我仍在寻找合适的解决方案。这个问题仍然没有答案。

如果有人有任何线索或提示或适当的解决方案,将不胜感激。

4

1 回答 1

2
  1. 您必须使用 SQL Profiler 检查发生了什么。
  2. 我敢打赌,ADO 会在内部克隆一个连接或使用一个连接池,然后下一个查询会获取另一个物理连接。所以,你得到了错误。要禁用池添加OLE DB Services=-4到您的连接字符串。
于 2012-05-05T14:31:36.253 回答