我在目录中部署了一个ssis软件包,并且从Application C#调用它,我设法通过向其传递参数来执行我的软件包参数,但是在执行软件包后我无法获得变量的值< / p>
string targetServerName = "MyServer";
string folderName = "MyFolder";
string projectName = "MyProject";
string packageName = "Package1.dtsx";
string sqlConnectionString = "Data Source=" + targetServerName +
";Initial Catalog=master;Integrated Security=SSPI;";
SqlConnection sqlConnection = new SqlConnection(sqlConnectionString);
IntegrationServices integrationServices = new IntegrationServices(sqlConnection);
Catalog catalog = integrationServices.Catalogs["SSISDB"];
CatalogFolder folder = catalog.Folders[folderName];
ProjectInfo project = folder.Projects[projectName];
PackageInfo package = project.Packages[packageName];
Collection<ExecutionValueParameterSet> executionValueParameterSet = new Collection<ExecutionValueParameterSet>();
executionValueParameterSet.Add(new ExecutionValueParameterSet
{ ParameterName = "MyParam", ParameterValue = "Param Value", ObjectType = 30 });
答案 0 :(得分:0)
我一贯处理此问题的方法是在数据库中创建一个执行日志/历史表,并在该表中存储要传递回应用程序的所有信息。
然后,在执行包之后,只需从表中选择最新行即可。
答案 1 :(得分:0)
SSISDB.CATALOG.EVENT_MESSAGES
DMV将返回执行期间变量更改为的值,其中OPERATION_ID
列是该包的特定执行实例的执行ID。为此,请确保将变量的RaiseChangedEvent
属性设置为True
。这可以在SSDT的“属性”窗口中完成(突出显示变量并按F4
)。此后,将变量更改为的值将在此DMV的MESSAGE
列中。另外,要查看执行期间的参数值,您可以查询SSISDB.CATALOG.EXECUTION_PARAMETER_VALUES
,执行ID将是此DMV中的EXECUTION_ID
列。