c# - 在 SSIS 2012 中的脚本组件中访问对象变量
问题描述
我在 VS 2012 中使用 SSIS,我发现的许多答案似乎都适用于旧版本或新版本。
我已经声明了一个名为 User::Weather_XML 的 ReadWriteVariables (我希望这会显示 - 我的公司政策不允许访问 imgur,所以它看起来有效,但我不知道。)
我看过很多答案: Reading object variable values in SSIS script component source - 这是指 Dts.Variables,它显然在 2012 年不再可用?
所以我的代码有这个,但它不会编译,因为 Dts.Variables 在当前上下文中不存在:
DataTable dt = new DataTable();
OleDbDataAdapter oleda = new OleDbDataAdapter();
oleda.Fill(dt, Dts.Variables("Weather_XML").Value);
如何将数据集放入脚本组件中以便我可以使用它?
我有一个带有 URL 字符串的数据集 - 我想浏览列表并使用每个 URL,获取相应的 XML,然后将其保存回我的对象。或将其写入数据库或其他东西。似乎这只是语法,但我无法弄清楚。
这使用了一个 IDTSVariables100,但随后将它引用到一个字符串,我有一个完整的对象,其中包含字符串。如果我添加代码
IDTSVariables100 varCollection = null;
this.VariableDispenser.LockForRead("User::Weather_XML");
它确实编译,所以它的进步。
我的 C# 很弱。明显地。2012 年需要什么语法才能将 Object 变量转换为我可以在脚本组件中使用的东西?随着,也许一些关于访问对象的特定部分的指导。假设 URL 是对象中的第一个字符串字段,我目前有 4 行。
此外,我包括以下命名空间,可能比我需要的要多:
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;
using System.Net;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;
using System.IO;
using System.Web.Script.Serialization;
using System.Xml;
using System.Xml.Serialization;
using System.Collections.Generic;
using System.Data.OleDb;
解决方案
在 SSIS 中,脚本任务和脚本组件是相似的,但绝对不相同。
使用脚本组件时 Dts.Variables
不可用(尽管在脚本任务中可用)。
以下 MSDN 文章比较了脚本任务和脚本组件,阐明了它们之间的区别:比较脚本任务和脚本组件
该文章的相关信息如下:
使用变量
Script 组件使用自动生成的基于类的类型化访问器属性,这些属性是从组件的 ReadOnlyVariables 和 ReadWriteVariables 属性创建的。例如:
[视觉基础]
Dim myVar as String myVar = Me.Variables.MyStringVariable
[C#]
string myVar; myVar = this.Variables.MyStringVariable;
在您的情况下,以下语法应该有效:
var xml = this.Variables.Weather_XML;
以下 TechNet 文章是另一个很好的来源,其中包含在 SSIS脚本组件中使用变量的示例。
推荐阅读
- c++ - c++算法为什么会出现无限循环
- javascript - 回调函数中的 JS 语法(nodejs、express、passport)
- python - Kivy > 线程化和使用 Spinner
- python - Spark 计划中的 Firebase 存储:要计费的项目与缺席的计费帐户相关联
- sql - 是否可以从其他表属性派生属性
- sql - 如何修复这个缓慢的 Postgres 选择查询
- ios - 如何在 MWPhotoBrowser swift iOS 中显示手机的图库
- cassandra - cassandra - 在某个条件下(在哪里)将行从一个表移动到另一个表
- mysql - 新数据库慢很多
- amazon-web-services - AWS DynamoDB 使用多个区域以获得更好的安全性?