4

我们的组织在大型机 Adabas 数据库中有很多基本数据。我们可以通过 ODBC 访问这些数据,并且 C# 已经使用 ODBC/Natural“存储过程”成功地查询/更新了它。

我们现在想做的是从 SQL Server 2005 存储过程中查询大型机表,将结果转储到表变量中,对其进行处理,然后将结果与本机 SQL 数据作为结果集连接起来。

当我们选择它时,从 SQL 执行 Natural proc 可以正常工作;但是,当我们将结果插入到表变量中时,SQL 似乎正在启动一个分布式事务,而这反过来又似乎对我们的连接造成了严重破坏。

鉴于我们没有执行更新,是否可以关闭此 DTC 升级行为?

有关正确设置 DTC 以与 DataDirect(以前的 Neon Systems)Shadow ODBC 驱动程序对话的任何提示?

4

4 回答 4

3

检查SET REMOTE_PROC_TRANSACTIONS OFF哪个应该禁用它。或者sp_serveroption一般配置链接服务器,而不是每批。

因为您是在 MS SQL 端编写的,所以您启动了一个事务。默认情况下,它会升级是否需要。即使表变量不参与事务。

我之前也遇到过类似的问题,MS SQL 端的行为会根据 MS SQL 是否写入、存储过程和其他内容而有所不同。我发现最可靠的方法是对我的 Sybase 链接服务器使用动态 SQL 调用......

于 2008-12-14T13:11:24.303 回答
3

以下代码为链接服务器设置“启用分布式事务促进”:

USE [master]
GO
EXEC master.dbo.sp_serveroption @server=N'REMOTE_SERVER', @optname=N'remote proc transaction promotion', @optvalue=N'false'
GO

这将允许您将链接服务器存储过程调用的结果插入到表变量中。

于 2010-04-24T20:21:24.513 回答
0

确实如此。您可能会猜到,我们要调用的 Natural 过程会进行查找和计算,如果可能的话,我们希望保持在该级别。

于 2008-09-22T20:02:44.733 回答
0

我不确定 DTC,但 DTSX(集成服务)可能对移动数据有用。但是,如果您可以简单地查询数据,则可能需要考虑添加链接服务器以进行直接访问。然后,您可以只编写一个简单的查询来根据链接服务器表中的选择来填充您的表。

于 2008-09-22T18:25:28.447 回答