我正在从SSIS包调用Storedprocedure。这个storedprocedure有三个输入参数,如Start Date,End Date和String Variable。
我们正在从.Net应用程序调用SSIS包。因此,我们必须将参数从C#代码传递给SSIS包,而SSIS包又传递给Storedprocedure。
我正在寻找建议我的文章和程序员。
答案 0 :(得分:4)
这是一个可能的解决方案。您可以在SSIS包中声明变量并设置存储过程以将它们用作输入变量。然后,将值传递给C#中的变量。
以下是一个例子:
在这种情况下,我通过传递C#中的值来将州和国家/地区插入表中。
StoredProcedure
,Country
和State
。EXEC dbo.InsertData @Country, @State
分配给变量StoredProcedure
。请参阅屏幕截图# 1 。Variable
。User::StoredProcedure
分配给 SourceVariable 。请参阅屏幕截图# 2 。Microsoft.SQLServer.ManagedDTS
。
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:
答案 1 :(得分:0)
请参阅Application
object以及Package
object允许传递参数的Execute(Connections, Variables, IDTSEvents, IDTSLogging, Object)
method上的信息。
var app = new Application();
Package myPackage = app.LoadFromSqlServer("myPackage", "server", "login", "password", null);
Variables params = myPackage.Variables;
params["StartDate"].Value = DateTime.Now;
params["EndDate"].Value = DateTime.Now;
params["StringVariable"].Value = "ooh a string";
var packageResult = myPackage.Execute(null, params, null, null, null);