【发布时间】:2009-06-05 13:51:56
【问题描述】:
我正在使用 VB6 和 Classic ASP 开发旧版应用程序。我们使用断开连接的 ADO 记录集来回传递数据。通常这是有效的。但是最近开始发生的是对于任何内部/外部联接,ADO 将这些包括在可用记录中以供选择。因此,当指定要更新的列(在它出错的情况下,主键列)时,它会依次更新错误的列(具有相同的名称)。我知道 ADO 拉取任何连接表的主键是正常的,但默认情况下 ADO 会隐藏它们。在我们的例子中,ADO 没有隐藏它们。
我将其范围缩小到 SQL Native Client 驱动程序无法正常工作。我可以回到 SQL Server 驱动程序 (SQL 2000),它运行良好,但是一旦我切换回 SQL Native Client,它就会出现上述行为。我检查了打开连接上的属性和记录集本身的属性,它们在每个实例中都匹配,除了一个(有多少隐藏列的计数是有道理的,因为 SQL Native 没有隐藏它们)。
我已经尝试了从 IIS 中删除 MSADC 文件夹并重新添加它的所有方法,我已经卸载了 SQL Native 并重新安装了它(随后将其升级到了最新版本)。在对它进行故障排除的过程中,我也多次重新创建了 ODBC 连接。在这一点上,我不知所措。
还要补充一点,SQL Native Client 似乎在我们的其他服务器上运行良好,没有其他人遇到此问题。任何人都可能知道会发生什么?谢谢!
编辑:正在发生的事情的示例(这发生在任何查询(存储过程,如果重要的话)和 >= 1 任何类型的连接)
在 temp_test 上选择 temp_id、temp_value 内部连接 another_table on another_table.temp_id = temp_test.temp_id 内部连接 yet_another_table on yet_another_table.another_id = another_table.another_id
这将在 ado 记录集中产生:
SQL 本地客户端
(0) temp_id
(1) 温度值
(2) temp_id(另一个表的主键)
(3) another_id(又一个表的主键)
SQL Server 驱动程序
(0) temp_id
(1) 温度值
SQL Server 2005 将它显示为:temp_id, temp_value
【问题讨论】:
-
当。我希望我能提供比哀悼更有用的东西......
标签: vb6 asp-classic ado