Sql server SSIS OLEDB数据传输调用参数化存储过程|未找到列
我有一个SQL server存储过程,它将数据库名称的一部分作为参数。当从SQLServerManagementStudio执行时,它可以完美地工作 但是,我需要从SSIS OLE DB源组件调用此SP。在OLE DB源组件中指定SQL命令和参数时,出现以下错误: “SSIS错误代码DTS_E_OLEDBERROR处出错。出现OLE DB错误。” 发生错误。错误代码:0x80004005。OLE DB记录可用。 来源:“Microsoft SQL Server本机客户端10.0”Hresult:0x80004005 描述:“链接服务器的OLE DB提供程序“SQLNCLI10”不支持 不包含该表该表不存在或当前 用户对该表没有权限。“:无法检索 来自数据源的列信息。请确保目标表 在数据库中,可以使用” 基本上,它找不到存储过程使用的表,因为数据库名称是参数化的。我四处搜索,发现OLEDB数据源需要表的元数据。我怎样才能提供这个 这是我的存储过程:Sql server SSIS OLEDB数据传输调用参数化存储过程|未找到列,sql-server,ssis,oledb,Sql Server,Ssis,Oledb,我有一个SQL server存储过程,它将数据库名称的一部分作为参数。当从SQLServerManagementStudio执行时,它可以完美地工作 但是,我需要从SSIS OLE DB源组件调用此SP。在OLE DB源组件中指定SQL命令和参数时,出现以下错误: “SSIS错误代码DTS_E_OLEDBERROR处出错。出现OLE DB错误。” 发生错误。错误代码:0x80004005。OLE DB记录可用。 来源:“Microsoft SQL Server本机客户端10.0”Hresult:
USE [ILLP]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[OUTPUT_MI_Tyep12] @param1 varchar(5)
AS
BEGIN
SET FMTONLY OFF;
SET NOCOUNT ON;
declare @query varchar(1000)
set @query='
SELECT [M12]
,[T3Size]
,[SizeVCost]
,NULL as [DefaultTonnage]
,NULL as [IdleCost]
,NULL as [SuperLocoID]
,[IfAllowFleetSizeVio]
FROM [ServN\PROD2].[Scenario_' + @param1 +'_PRD].[dbo].[Para_LTYPE]'
exec(@query)
END
我猜您正试图使用SSIS中带有参数的SP在不同的数据库中循环。但是,您可以使用变量源中的Select命令执行此操作:
选择\u OUTPUT\u MI\u Tyep12
例如(字符串类型)李>
SELECT [M12]
,[T3Size]
,[SizeVCost]
,NULL as [DefaultTonnage]
,NULL as [IdleCost]
,NULL as [SuperLocoID]
,[IfAllowFleetSizeVio]
FROM [ServN\\PROD2].[Scenario_" + @[User::DBNameParameter] + "_PRD].[dbo].[Para_LTYPE]
@[User::dbname参数]
SELECT\u OUTPUT\u MI\u Tyep12
变量