sql-server-2005 - 从 SQL 2005 链接服务器执行 DB2 iSeries 存储过程

标签 sql-server-2005 db2 linked-server ibm-midrange

我正在尝试从 MS SQL 2005 中的链接数据库执行存储过程。链接数据库是 iseries 服务器上的 db2 数据库。我正在使用 iSeries IBMDASQL 服务提供程序。我可以使用简单的 vbscript 和 ado 毫无问题地查询存储过程。当我尝试在 SQL Server 上的查询分析器中执行相同的存储过程时,我从未看到任何结果。查询分析器始终显示“已执行命令”,当我在临时表上执行 select * 时,不会出现任何值。我究竟做错了什么????? 谢谢!

--下面查询分析器的代码--

DECLARE @emailToAddress         char(50)
DECLARE @emailFromAddress       char(50)

set @emailToAddress = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="8be8fef8ffe4e6eef9a5f8eef9fde2e8eecbe8e4e6fbeae5f2a5e8e4e6" rel="noreferrer noopener nofollow">[email protected]</a>'
set @emailFromAddress = '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="15766066617a787067557278747c793b767a78" rel="noreferrer noopener nofollow">[email protected]</a>'

If Object_ID('tempdb..#tmpResultTbl') Is Not Null
    Drop Table #tmpResultTbl

Create Table #tmpResultTbl
(
OUTPGMID Char(150))

--SET FMTONLY Off
Set NoCount On
Insert Into #tmpResultTbl 
EXEC ('CALL abicqual.VP_GETCCEPGMID(?, ?) ', @emailToAddress, @emailFromAddress) AT MAM400 

Select * From #tmpResultTbl

更新: 这是使用 openquery 的更新代码...仍然没有运气:(

声明@TSQL varchar(8000) 声明 @emailToAddress varchar(50) 声明 @emailFromAddress varchar(50) SET @emailToAddress = '[email protected] ' SET @emailFromAddress = '[email protected] ' SET @TSQL = 'SELECT * FROM OPENQUERY(MAM400,''CALL abicqual.VP_GETCCEPGMID(''''' + @emailToAddress + ''''', ''''' + @emailFromAddress + '''''' + ')''' + ')' 打印@TSQL 执行(@TSQL)

--输出如下-- SELECT * FROM OPENQUERY(MAM400,'CALL abicqual.VP_GETCCEPGMID('' [email protected] '', '' [email protected] '')') 消息 7357,16 级,状态 2,第 1 行 无法处理对象“CALL abicqual.VP_GETCCEPGMID(' [email protected] ', ' [email protected] ')”。链接服务器“MAM400”的 OLE DB 提供程序“IBMDASQL”指示该对象没有列,或者当前用户对该对象没有权限。

最佳答案

事实证明,我使用的 IBMDASQL 提供程序存在许多问题。不管您是否相信,使用 Microsoft OLE DB Provider for ODBC 驱动程序会更快、更可靠。使用此提供程序创建新的链接服务器后,我之前的所有 sql 尝试都正常工作。 干杯!

关于sql-server-2005 - 从 SQL 2005 链接服务器执行 DB2 iSeries 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/329051/

相关文章:

oracle - 从 SQLSERVER 数据库生成 Oracle SQL 脚本

sql-server-2005 - 错误发生后仍可继续执行程序

sql - 如何将架构和一些数据从 SQL Server 复制到另一个实例?

testing - 从测试页面中执行外部命令 Fitnesse/DBFit

SQL 服务器 : is it possible to get data from another SQL server without setting linked server?

mysql - 链接服务器更新mysql不工作

sql - 如何查找可用于 SQL Server 的 OLE 提供程序?

sql - 如果缩小数据库 (SQL Server 2005) 的性能是否会降低?

sql - 在 db2 中优化查询

java - 在 "BEGIN-OF-STATEMENT"之后找到 CallableSamentment 。预期的 token 可能包括 : "<space>"