.net - SSIS Dot Net Script 任务 - 获取运行时包变量值
问题描述
在 SSIS 脚本任务中,如何在运行时使用 DTS 库或任何其他方式获取所有包级变量值,而不添加 ReadOnlyVariables 或 ReadWriteVariables。我需要最新/更新的值。
解决方案
using RuntimeWrapper = Microsoft.SqlServer.Dts.Runtime.Wrapper;
namespace ST_9646389d9def4d9b8d8b53a9ae45fc56
{
[Microsoft.SqlServer.Dts.Tasks.ScriptTask.SSISScriptTaskEntryPointAttribute]
public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
{
public void Main()
{
RuntimeWrapper.IDTSProject100 p = ((RuntimeWrapper.IDTSProject100)((Package)Dts.Variables["User::AnyReadOnlyVariable"].Parent).Project);
Project proj = GetProject(p);
foreach (PackageItem pkgItem in proj.PackageItems)
{
gdicLogData = new Dictionary<string, string>();
Package pkg = pkgItem.Package;
Variables varPackageValiables = pkg.Variables;
foreach (Variable pkgVar in varPackageValiables)
{
if (pkgVar.Namespace.ToString() == "User")
{
Dictionary.Add(pkgVar.Name, pkgVar.Value.ToString());
}
}
Parameters parameters = pkg.Parameters;
foreach (Parameter parItem in parameters)
{
Dictionary.Add(parItem.Name, parItem.Value.ToString());
}
}
}
}
}
===================
private Project GetProject(RuntimeWrapper.IDTSProject100 proj)
{
System.Reflection.PropertyInfo pInfo = proj.GetType().GetProperty("Project",
System.Reflection.BindingFlags.Public |
System.Reflection.BindingFlags.NonPublic |
System.Reflection.BindingFlags.Instance);
Project prj = (Project)pInfo.GetValue(proj, null);
return prj;
}
推荐阅读
- go - 使用 Golang 服务器进行 Flutter Web
- nginx - What are the nginx configuration settings to host a Rblogdown site on a digital ocean droplet?
- javascript - 如何在反应原生的对象属性字符串中给出行空间
- python - How to deploy python module extension
- python - 尝试获取多个目录的值时出现太多值无法解包(预期为 2)错误
- c++ - 为什么嵌套类对外部类不可见
- javascript - JS:表单提交没有附加价值
- scikit-learn - sklearn 在项目内部或外部是否有任何模型类型元数据?
- wsdl - BPEL 和 ESB:SOA 概述
- android - 从适用于模拟器和物理设备的 ImageView 上的 URL 显示位图的正确方法?