问题标签 [script-component]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
508 浏览

c# - SSIS Web 服务脚本组件(字典中不存在给定的键)

如果这个问题已经得到回答,我很抱歉,但我已经做了一些研究,还没有找到有意义的东西。

我正在创建一个连接到 Web 服务并将数据转储到 SQL 表中的 SSIS 脚本组件。尽管脚本组件仍在进行中,但我目前收到以下错误:在 System.Collections.Generic.Dictionary`2.get_Item(TKey key) at ScriptMain.CreateNewOutputRows() at UserComponent.PrimeOutput(Int32 Outputs, Int32[] Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.PrimeOutput 上的 OutputIDs、PipelineBuffer[] 缓冲区、OutputNameMap OutputMap)(Int32 输出、Int32[] outputIDs、PipelineBuffer[] 缓冲区)

这是我用于脚本组件的代码的核心:

任何帮助将不胜感激!

0 投票
3 回答
1657 浏览

c# - 数据流脚本组件中的 SSIS 设置变量

我有一个输入平面文件,每个输出记录有 2 种类型的输入记录。第一条记录(由第一列中的 C 标识)具有 ID 和人口统计信息。第二条记录(由第一列中的 L 标识)包含一些财务信息。它们是管道分隔的并且具有不同的长度。

没有任何方法可以将所有 C 记录写入一个流,将 L 记录写入另一个流,然后将它们重新组合在一起。所以我的解决方案是进行有条件的拆分。当我点击 C 记录时,我需要在 SSIS 变量中存储所有信息。当我点击 L 记录时,从变量中生成派生列,并使用派生列和 L 记录中的列来制作我的输出记录(也是平面文件)。

我浏览了整个 Internet,找不到 C# 代码来在 C 记录路径的脚本组件中设置我的变量。我希望代码看起来像

Variable.User::Firstname = Column 2(来自输入文件) Variable.User::Lastname = Column 3(来自输入文件)

等等

有人可以帮帮我吗?

谢谢,

迪克

0 投票
0 回答
446 浏览

visual-studio-2015 - 将脚本组件添加到 VS2015 生成的包不能在 SQL Server 2016 上运行

我们使用包含脚本组件的 BIML 生成包从 SQL 2012 升级。我们收到一个错误,我可以在没有 BIML 的新项目中重现该错误。

错误是:

验证失败并返回错误代码 0xC0048021。

组件丢失、未注册、不可升级或缺少必需的接口。该组件的联系信息是“包含并运行自定义脚本代码。例如,应用业务规则限制“收入”列中的有效值范围或将两列中的值相加并计算总和的平均值。 Microsoft Corporation;Microsoft SQL Server;Microsoft Corporation;保留所有权利;http://www.microsoft.com/sql/support ;9 "。

“Parse PatientContacts,clsid {4F885D04-B578-47B7-94A0-DE9C7DA25EE2}”的组件元数据无法升级到组件的较新版本。PerformUpgrade 方法失败。

Microsoft.SqlServer.Dts.Pipeline.ComponentVersionMismatchException:Parse PatientContacts 的版本与此版本的 DataFlow 不兼容。[[指定组件的版本或管道版本或两者都高于当前版本。此包可能是在新版本的 DTS 或组件上创建的,而不是在当前 PC 上安装的。]] 在 Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostCheckAndPerformUpgrade(IDTSManagedComponentWrapper100 wrapper, Int32 lPipelineVersion)

为确保它不是 BIML 或 VS2012,我可以使用 VS2015 通过以下方式重现此错误:

  • 在 Visual Studio 2015 中创建了一个新项目
  • 将 TargetServerVersion 配置为 SQL Server 2016
  • 在我的数据源和 -Destination 之间使用脚本组件创建了一个数据流
  • 保存并构建项目。从 bin 文件夹中提取 .ispac 文件
  • 使用 SSMS 17 在我的 SQL Server 2016 实例上部署项目
  • 执行将环境配置为正确值的包。

任何帮助将不胜感激。

0 投票
1 回答
155 浏览

c# - 如何使用 ssis 的脚本组件将票号(查找字段)插入 MS Dynamics CRM 定价批准产品(自定义实体)

我需要在定价批准产品中创建或更新票号查找字段。此票号(查找字段)链接到另一个名为定价批准票的实体中的票(文本字段)。

这是我在脚本组件中的代码。

当我启动 SSIS 包时,它运行没有错误。但不知何故,没有插入数据。

在此处输入图像描述

创建普通文本字段没有问题。但是当涉及到查找字段时,互联网解决方案建议根据我的代码使用EntityReference,但我不知道出了什么问题。所以我在这里有点迷失了。

0 投票
1 回答
148 浏览

c# - 如何使用 ssis 脚本组件更新 Dynamics CRM 中定价批准产品(自定义实体)中的名称字段

我需要使用 ssis 更新定价批准产品中的名称字段。这是我在脚本组件中的代码。

但我遇到了一个例外:实体引用不能有 id 和 key 属性为空。但是我在 crm 中的姓名字段是文本字段。我也使用检查`

我的断点跳过这段代码if (AppProductLookup != Guid.Empty)。因此我没有错误,但这不是我想要的。我不知道出了什么问题。所以我在这里有点迷失了。

在此处输入图像描述

在此处输入图像描述

0 投票
1 回答
1624 浏览

ssis - SSIS:如何将 NTEXT 输入转换为字符串以在脚本组件中执行拆分功能?

我收到一个 Unicode 文本平面文件,其中一列是单个固定长度值,另一列包含由垂直管道“|”分隔的列表值。第二列的长度和它包含的分隔值的数量会有很大的不同。在某些情况下,该列的宽度最多为 50000 个字符,并且可能包含一千个或更多分隔值。

输入文件示例:

我的想法是对该列执行拆分操作并为每个值创建一个新行。我正在尝试使用脚本组件来执行拆分。

分隔列的宽度很容易超过 DT-WSTR 的 4000 个字符的限制,所以我选择了 NTEXT 作为数据类型。这会出现问题,因为我熟悉的 .Split 方法需要一个字符串。我正在尝试将 NTEXT 转换为脚本组件中的字符串。

这是我的代码:

}

我试图得到的输出是这样的:

但我实际上得到的是:

我可能做错了什么?

0 投票
1 回答
901 浏览

excel - 将虚拟单行添加到 SSIS 中 excel 文件的第一行

我每周都会收到 excel 文件。假设它有以下列:

我面临列数据类型的问题。SSIS excel 源正在考虑与字符串相同的列数据类型,有时为 Unicode 字符串,有时为基于底层 excel 数据的 Unicode 文本流。

所以我想要做的是添加包含 Unicode 文本流数据的虚拟行,并使用脚本组件将其插入到 excel 的第一行。因此,当我阅读该 excel 时,SSIS excel 源每次都会自动将这些列检测为 Unicode 文本流,以后使用数据转换我可以将一些列转换为适当的数据类型。我想知道如何将虚拟文本行插入 excel 的第一行。现有的列数据将跟随该虚拟行数据。

目标:

1)获取excel文件,

2)读取excel并将虚拟“文本”行添加到第一行并使用SSIS源脚本组件保存到其他名称。

0 投票
0 回答
160 浏览

sql-server - SSIS - 创建摘要输出文件

我想使用 SSIS 对来自各种数据源的多个文件(CSV、Excel)执行转换,并且输出应该始终是特定结构的 CSV 文件。

执行转换步骤后的要求之一是创建一个关于以下结构的过程结果的输出摘要文件 (MANIFEST FILE) 。

BATCH_ID|EXTRACTED_FILE_NAME|MODEL_TYPE|RECORD_COUNT|TOTAL_QTY|GENERATED_ON_TE|CONTENTS_FROM_DATE|CONTENTS_TO_DATE|WORKSET_ID|FILE_STATUS|FILE_STATUS_TS

000005|NSL_B_YFRCARRAB0_PRODUCT_MASTER_20171122.txt|B|829||20171122121525|||||


重要栏目:

批次 ID:运行 ID

EXTRACTED_FILE_NAME:SSIS 创建的 CSV 文件的名称(输出文件)

RECORD_COUNT:输出文件中的行数

TOTAL_QTY:列 QTY 的总和

GENERATED_ON_TE:文件生成时间

STATUS_TS:状态 - 正常/失败


这个输出是否可以在 SSIS 中实现?我可以在不使用脚本组件的情况下创建它吗?如果我必须使用脚本组件,你能帮我导航一下吗?

非常感谢,马丁!

0 投票
1 回答
1045 浏览

sql - 在 SSIS 脚本组件中更新表

我在数据库中有这些列的表

在列中,Fact我只有NULLs. 我想用来Script Component更新这个表中的数据。有没有办法做到这一点?

注意:由于查询性能,我不能使用 SQL 语句。

0 投票
1 回答
837 浏览

sql-server - 使脚本组件根据文本文件中的值动态分配数据类型

我的任务是使用 SSIS 中的脚本组件将 .txt 文件中的数据加载到 SQL Server 表中。我已经使用脚本成功加载了它。

包变量详细信息

包变量详细信息

但问题是我只能使用单一数据类型将文本文件中的所有值加载到表中(我使用 nvarchar(200) 作为所有值的通用数据类型)。我已将 nvarchar(200) 作为其中一个包变量中的值传递,并在脚本中调用了它。

我期望脚本组件通过了解文本文件中可用的值来为列分配 DataType。

示例:我加载到表中的文本文件有以下数据。

因此,将创建一个名为 dbo.File_1 的表,其中包含 Id、Name 和 Age 列。但是所有这些列都是使用前面提到的相同数据类型 nvarchar(200) 创建的。

但我的要求是脚本组件应根据值分配数据类型,例如,列 ID 应分配数据类型 int,名称应分配数据类型 nvarchar(50) 等等。同样,脚本应根据任何类型的值(如十进制、日期等)分配数据类型

有没有可能的方法来实现这一目标?提前致谢。

附加提示:

该脚本通常在执行期间每次都删除并创建一个新表。表名基于 FileName。