问题标签 [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 回答
886 浏览

sql-server - SSIS 脚本组件作为源 Null 值

我在 SSIS 中有一个包,它使用 essbase 多维数据集中的 adomd.Net 加载数据。使用 2 列包可以正常工作,但是当我添加 3. 列包时失败。

错误信息说:

你调用的对象是空的。

第一行的第三列包含null和其他行中的一些值。

问题在 3. 列中的值中查找。我尝试了这个 if 语句,但我得到的是空列而不是值。

0 投票
0 回答
1128 浏览

ssis - SSIS 脚本组件需要很长时间才能在编辑时打开 | VS 2017

当我在 SSIS 上编辑脚本组件时,打开一个新的 Visual Studio 实例需要 30 秒以上,以便我可以对其进行编辑。

这使得调试和进行小的更改非常耗时。今后我将大量使用 SSIS 包,我一直在寻找一种方法来加快这个过程。在这里找到了最接近我的问题的解决方案:

ssis vsta脚本组件在编辑VS2015时打开缓慢

但这似乎并没有在将 SSIS 作为新实例重新安装后解决我的问题。
VS 2017 中是否对此进行了修复?

0 投票
3 回答
14333 浏览

sql-server - SSIS 数据流任务错误:对象引用未设置为对象的实例

我正在尝试创建一个包含多个数据流任务的包。这些任务在性质上非常相似,但包含相当重要的差异。

我试图复制任务,然后更改需要更改的内容。

当我自己运行任务时,它运行良好,但是当我与包中的所有其他任务一起运行它时,我收到以下错误:

你调用的对象是空的。 在 ScriptMain.Input0_ProcessInputRow(Input0Buffer Row) 在 UserComponent.Input0_ProcessInput(Input0Buffer Buffer) 在 UserComponent.ProcessInput(Int32 InputID, String InputName, PipelineBuffer Buffer, OutputNameMap OutputMap) 在 Microsoft.SqlServer.Dts.Pipeline.ScriptComponent.ProcessInput(Int32 InputID, PipelineBuffer缓冲区)在 Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID,PipelineBuffer 缓冲区)

不是最友好的错误消息。

谁能告诉我这是什么以及如何解决它?我假设有一些变量或其他属性被重复,但是哪一个?

请注意,多个数据流任务中的许多列将具有相同的列名。

0 投票
1 回答
223 浏览

ssis - 如何将列表内容保存为 OBJECT 类型

我有一个列表/元组,其中填充了一些值。我想将这些值保存到脚本组件中的 OBJECT 类型的变量中。我怎样才能做到这一点。到目前为止,我确实尝试过这个但没有成功。

0 投票
2 回答
370 浏览

c# - 在 SSIS 脚本组件中使用 C# 将多个平面文件行提取为一个

在 SSIS 中脚本组件的脚本中,我尝试从平面文件创建一条记录,如下所示:

起始数据:

最终结果:

最终结果将映射到 SSIS 中的 OLE DB 目标。

我最初编写脚本以使用 StreamReader 将每个线型(标题、详细信息)拉为组输出,但很快意识到没有标识符可以将它们重新连接在一起。

这是我目前写的:

预先感谢您的所有帮助!如果您有任何问题,请告诉我。

0 投票
7 回答
27603 浏览

c# - 无法加载文件或程序集“Newtonsoft.Json”版本=11.0.0.0

我已经阅读了很多对这个问题以前版本的回复,但似乎没有一个有效。

每次我在 Visual Studio 2015(v14.0.25431.01 更新 3)中打开我的脚本组件时,它都会告诉我我缺少对 Newtonsoft.Json 的引用。所以我进入 NuGet 包管理器,它要求我恢复我所做的并说它成功完成。

然后我保存并尝试运行我的 SSIS 包并收到以下错误。

无法加载文件或程序集“Newtonsoft.Json,Version=11.0.0.0,Culture=neutral,PublicKeyToken=30ad4fe6b2a6aeed”或其依赖项之一。该系统找不到指定的文件。

我的 packages.config 文件看起来像这样。

我的 app.config 文件看起来像这样。

我可以导航到它正在寻找的文件夹并查看 .dll 文件

C:\Users\lp1.db\AppData\Local\Temp\Vsta\SSIS_SC130\VstaGbmf__V5kCUWonnRT2qrG_g\packages\Newtonsoft.Json.11.0.1\lib\net45\Newtonsoft.Json.dll

有没有其他人遇到过这个持续的问题,尽管已设置,但它仍然无法找到文件。

0 投票
2 回答
2715 浏览

c# - SSIS 脚本组件源:如何添加错误输出

我创建了一个源代码类型的脚本组件(即数据流)。如何创建一个同时捕获和的错误输出?errorColumnNameerrorDescription

我发现为脚本组件创建错误输出的唯一实现假设该组件是一个转换。至少据我所知,两者之间的主要区别在于转换可以访问 Process_Input(Row),而源组件正在创建行,因此 Process_Input 及其 Row 成员不可用。

上下文:源组件在某些字符串类型的列上失败,并出现超出缓冲区的错误。但是,没有提供关于错误列名称或错误值的信息。我可以通过将数据发送到平面文件输出来识别错误列,但我不希望这样做。

0 投票
2 回答
1218 浏览

c# - SSIS 脚本组件 Input0Buffer 方法没有 GetName()?

我正在寻找一种在 SSIS 数据流任务脚本组件中获取我的属性名称的方法。我一直在寻找高低只找到这个。我一直试图让这段代码工作,但我太新手了,无法理解这里发生的事情,我觉得解释得不是很好(没有冒犯)。

此组件之前的源是使用连接两个表的 SQL 查询。在组件内部,我想将列与列进行比较。然后调用我创建的更新方法来使用SqlConnection 来执行更新。

我想以某种方式获得 Row.TableBLastName 的 PropertyName,而不必为我正在做的每个测试硬编码“TableBLastName”,这会很多。

问题是输入缓冲区类没有 Property.GetName() 这也意味着我无法向该类添加方法来获取属性名称,因为每次运行都会重新生成它。

0 投票
1 回答
516 浏览

c# - 无法为脚本组件生成 BIML

我正在尝试使用 BIML <ScriptComponentProject> 标签创建一个简单的流程,但它对我不起作用!

  • 如果我手动创建数据流,那么它工作得很好!

    • 我的数据流有:SRC > SCRIPT-COMPONENT > TGT
    • 我添加的唯一逻辑是为每个传入行计算一个行号(暂时保持逻辑绝对简单)
  • 执行手动解决方案时:

    • 顺序行号存储在 TGT 表中 (test_np_02)
    • 伟大的!
  • 但是,当我尝试使用附加的 BIML 创建完全相同的包时,出现以下错误:


SSIS 输出日志:


当我尝试使用 BIML 创建 PKG 时,我不确定出了什么问题:

  • 当我手动创建包时(使用相同的代码),这些错误从未弹出
  • 我将手动解决方案中的重要 C# 文件复制粘贴到 BIML


问题/想法:

  1. 是否与必须用于 ProjectCoreName、AssemblyProduct 和 AssemblyTitle 的 GUID 有关?

    • 这是每次扩展BIML时自动生成的吗?
    • 如果是这样,我如何在 BIML 本身中为这些项目创建一个 GUID .. 以便它在扩展后直接工作?
  2. 这与我必须在 <Files> 标签内的 BIML 中创建 .cs 文件的顺序有关吗?

    • 我目前假设 <Files> 标签中 <File> 项目的实际顺序与 BIML 无关
  3. 难道我也必须在 BIML 中生成“Resources.resx/Resources.Designer.cs”和“Settings.settings/Settings.Designer.cs”吗?

  4. 在每个 .cs 文件中都有“#region 命名空间”部分真的很重要吗?

    • 我从手册中删除了它 .. 仍然可以正常工作!


请帮忙。

笔记:

  • 我正在使用 SSDT 2015 和 Varigence BIMLExpress 2017(内部版本 5.0.61915.0)

  • 我知道这可以很容易地在 SRC 本身的 SQLServer 中使用 ROW_NUMBER() 来完成,但是:

    • 我在附加示例中使用 OleDbSource 只是为了保持简单
    • 最后,我将不得不使用 BIML 生成数百个代码 PKG,它将 SRC 作为平面文件,而不是 OleDB。
    • 显然,我希望我生成的 ScriptComponents 在扩展后立即工作.. 无需任何进一步的手动干预:)


谢谢,


NP


BIML 文件:https ://drive.google.com/file/d/10O3aSL5IO34ULS44wl7IX4LUmPH_pI6V/view?usp=sharing

0 投票
1 回答
217 浏览

c# - SSIS异步转换保留上一列值并设置为下一行

在 SSIS 中使用异步转换时遇到问题。为了简化问题,假设我只有两个输出,“Name”和“Id”。

我的 C# 代码是:

所以理想情况下,当两个输出填满 Output0Buffer 时,会输出“Name”和“Id”,但问题是,当第二行被读入缓冲区时,它会String Id再次初始化,所以串联Output0Buffer.Id = Id + Row.Id.Trim();不起作用。(它的工作原理就像"" + rest part of the Id因为第一部分被初始化而第二部分是当前值)

我现在想坚持使用脚本组件转换,有什么办法可以解决这个问题吗?