我正在从 SSIS 包调用存储过程。该存储过程具有三个输入参数,例如开始日期、结束日期和字符串变量。
我们正在从 .Net 应用程序调用 SSIS 包。因此,我们必须将参数从 C# 代码传递到 SSIS 包,后者又传递到存储过程。
我正在寻找文章和程序员来推荐我。
最佳答案
这是一个可能的解决方案。您可以在 SSIS 包中声明变量并设置存储过程以将它们用作输入变量。然后,将值从 C# 传递给变量。
这是一个例子:
在此场景中,我通过传递 C# 中的值将州和国家/地区插入表中。
- 在 SSIS 包上,创建三个参数
StoredProcedure
、Country
和State
。 - 将值
EXEC dbo.InsertData @Country, @State
分配给变量StoredProcedure
。请参阅屏幕截图#1。 - 将“执行 SQL 任务”拖放到“控制流”选项卡上。
- 在执行 SQL 任务编辑器上,将其配置为使用 ADO.NET 连接。
- 将SQLSourceType更改为
变量
。 - 将
User::StoredProcedure
分配给SourceVariable。请参阅屏幕截图#2。 - 请参阅屏幕截图 #3 以了解参数映射部分的配置方式。
- 在 C# 中,您可以传递参数值,如下所示。此代码需要引用 DLL
Microsoft.SQLServer.ManagedDTS
。 - 屏幕截图 #4 显示插入表中的数据。
.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.SqlServer.Dts.Runtime;
namespace CS.ExecuteSSIS
{
class Program
{
static void Main(string[] args)
{
Application app = new Application();
Package package = app.LoadPackage(@"C:\Learn\SSIS\Learn.SSIS\Learn.SSIS\CallFromCS.dtsx", null);
Variables vars = package.Variables;
vars["Country"].Value = "US";
vars["State"].Value = "California";
DTSExecResult result = package.Execute();
Console.WriteLine("Package Execution results: {0}", result.ToString());
}
}
}
存储过程dbo.InsertData:
CREATE PROCEDURE [dbo].[InsertData]
(
@Country NVARCHAR(50)
, @State NVARCHAR(50)
)
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO dbo.SSISUsingCS (Country, State) VALUES(@Country, @State)
END
希望有帮助。
屏幕截图#1:
屏幕截图#2:
屏幕截图#2:
屏幕截图#3:
关于c# - 使用输入参数调用 SSIS 包中的存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6144210/