gpt4 book ai didi

sql-server - 尝试调用从SSIS包中的链接服务器选择数据的T-SQL存储过程

转载 作者:行者123 更新时间:2023-12-02 10:27:12 25 4
gpt4 key购买 nike

我有一个场景,我试图从远程服务器(我在该服务器上只有读取权限)中的表 t1 和 t2 中选择一些数据,在另一个远程服务器(我是 DBO 但不具有读取权限)中选择 DB db1 中的 S1确实拥有所有权限,这样我就可以做任何我想做的事情)通过 SSIS 包将 DB db2 中的 S2 放入表 t1 中。

S1 和 S2 都是链接服务器。我通过 SSMS 中的对象服务器从 S2 链接到 S1。

现在,我在 S2.db2 中创建了一个存储过程 sp1,其中包含来自两个不同表的一些 select 语句,以及一系列日期范围的联接,这些日期范围作为参数传递给 sp1。

The input parameters for SP

例如如下:

从 s1.db1.schema1.t1 中选择 *左连接s1.db1.schema1.t2开启 [条件]哪里[条件]现在我的 SSIS 包有一个数据流任务,其中有 OLE DB 源和目标以及到 s2.db2 的连接字符串

在源代码中,我直接在 SQL 命令中调用上述查询,并将其填充到目标表 S2.db2.t1 中,并且工作正常

Passing the query directly

但是当我尝试执行以下操作时它会抛出错误

  1. 创建 2 个包级别 DATETIME 变量作为 v1、v2 并传递默认值值(value)观 - 没问题
  2. 在 OLE DB 源 -> 连接字符串 -> SQL 命令 -> EXEC sp1 ?, ? - 没问题
  3. 单击“参数”选项卡并选择“参数 0”和“参数 1”的用户参数 - 没问题
  4. 现在,当我对 SQL COMMAND 窗口说“ok”时,它给出的错误如下

Error while calling the SP

错误是:

标题:Microsoft Visual Studio

FII54_CBI_TM51 错误 [FII54_CBI 1 ]:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80004005。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 10.0” Hresult:0x80004005 描述:“操作数类型冲突:int 与日期不兼容”。

FII54_CBI_TM51 错误 [FII54_CBI 1 ]: 无法从数据源检索列信息。确保数据库中的目标表可用。

<小时/>

其他信息:

HRESULT 异常:0xC020204A (Microsoft.SqlServer.DTSPipelineWrap)

<小时/>

按钮:

确定

我明白该错误的含义,但我根本不明白为什么会抛出此错误。

如果有人可以帮我解决这个问题,我很感激?这对我来说非常紧急。

最佳答案

当使用存储过程作为 OLEDB 源时,您应该确保在存储过程中具有:

SET NOCOUNT ON;

然后在执行该过程之前,添加:SET FMTONLY OFF

SET FMTONLY OFF;
EXEC CBI_MASTER_PID ?, ?

你能尝试一下这个吗?

关于sql-server - 尝试调用从SSIS包中的链接服务器选择数据的T-SQL存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8044632/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com