问题标签 [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 投票
0 回答
43 浏览

ssis - SSIS编译脚本组件时是否有版本特定的编译符号?

我有使用脚本组件作为数据源的包。其中一些覆盖了类中的PrimeOutput方法Microsoft.SqlServer.Dts.Pipeline.ScriptComponent。在 2008 年,此方法有 3 个参数,但从 2012 年开始,它现在有四个参数。

这些包目前在 SSIS 2008 下执行,但很快将移至 SSIS 2014。我需要打开这些包并解决问题,但我想提前完成并仍然能够部署到 SSIS 2008,但也可以让它们在 2014 年新环境准备就绪时工作,而无需在环境之间移动时进行额外的更改。

如果我可以在编译时区分环境,那么我可以解决这个问题,但这意味着我需要使用预处理器指令。我知道我可以在脚本组件的项目文件中定义它们,但我希望它可以在 SSIS 2008 和 SSIS 2012 中工作,而无需更改 .dtsx 文件。

有谁知道 SSIS 的各种版本在编译脚本组件时是否定义了特定于版本的指令?

0 投票
1 回答
740 浏览

c# - SSIS 2008 脚本组件更新记录

我正在尝试将数据从一个数据库移动到另一个数据库,并且需要对脚本组件中的数据进行一些按摩。

问题是,虽然我可以声明组件中的所有字段,但这样做似乎与 SSIS 的本质背道而驰。

所以我有一个大约有 20 个字段的表。其中一个字段是使用我们在 C# 中的业务层创建的文件目录路径。我没有写它,它实际上不是我的开发游戏,因为我更多的是数据库。

由于我们将数据移动到另一个数据库,因此每条记录的文件路径都在更改。

明白了进入脚本组件的奇异值确实为记录生成了有效的文件路径,但所有其他信息都没有流经脚本组件。

现在我可以在脚本组件中声明记录的其余列,但这似乎违背了程序的性质。毕竟数据流。

所以我正在寻找的步骤顺序是.. 1. 引入一行数据 2. 使用脚本组件仅按摩那一列值,因为它允许我们使用业务层 3. 仅更新其中的一列行 4. 将其插入目标数据库。

其中大部分都很容易做到,但脚本组件限制了数据的流动。

有什么办法解决这个问题,还是我只需要把它吸起来,让整个表格通过脚本组件?

谢谢

0 投票
1 回答
129 浏览

sql-server - 将日期、星期和年份转换为日期

我得到了一个 Excel 文档,其中记录了工作时间信息,该文档包含某些列,这些列在 Visual Studio 中使用 SSIS 读取,然后将信息写入数据库。

周和年列包含周数和年,周一到周五列包含有关在一周中的某一天在某项任务上花费了多少工作时间的信息。

我想做的是获取 WeekNr、Year 和 Day 并将它们转换为日期。我一直在尝试通过使用将日数、周数和年份转换为日期的脚本组件来完成此操作,但到目前为止,我还无法从列中获取日数。在我看来,如果使用以该周的第一个和最后一个日期为开始和结束日期的方法效果最好。

所以我的问题是是否有人知道如何做到这一点,或者我是否应该尝试不同的方法。

脚本组件:

0 投票
1 回答
202 浏览

ssis - Deploy SSIS Script to Toolbox

I am trying to deploy a Script component to SSIS toolbox in the Data Flow for reuse. I'm using visual studio 2010, and SQL server 2014.

I have created the script, Signed the assembly, used Gacutil.exe /i on the DLL file to add it. It now recedes in the GAC_MSIL folder under it's strong name folder.

The above procedure is the current way I'm trying to get it to work, but I have additionally tried to use SN utility to generate a strong name and add this key back into the build. Didn't work any better than the above procedure. Is it supposed to be next to impossible to add custom components to SSIS?

In my simple mind it should be just sign, build, GAC and done.

0 投票
1 回答
72 浏览

sql - 将 PeriodStart 和 PeriodEnd 转换为年 + 周数

我正在尝试将开始 + 结束日期转换为多行,其中填充了周数和与之相关的年份。我的想法是使用脚本组件在 SSIS 中转换此开始 + 结束日期,并通过将 SynchronousInput 设置为“无”为每周创建行。我尝试为此使用时间跨度,但是当达到第 53 周以上时,这不计入下一年。

有谁知道如何做到这一点?

例子:

输入:

想要的输出:

0 投票
1 回答
4304 浏览

c# - 在 SSIS Script Component 中,ProcessInput() 和 Input0_ProcessInputRow() 有什么区别

我一直假设 Input0_ProcessInputRow(Input0Buffer Row) 方法对通过脚本组件的每一行运行一次:

我最近发现了另一种名为ProcessInput(int inputID, PipelineBuffer buffer)的方法,我想知道我是否因为从不使用它而做错了什么。

在哪些情况下我会使用 Input0_ProcessInputRow() 与 ProcessInput()?

谢谢。

0 投票
3 回答
1126 浏览

sql - PostExecute 未在 SSIS 脚本组件中触发

我在 SQL2012 中有一个源脚本组件。我相信如果你想在 Scriptcomponent 中设置一个读/写变量,它必须在 Postexecute 方法中设置。我就是这样做的;

我在脚本组件运​​行后测试了变量,发现它没有被设置。我在 PostExecute 方法中设置了一个断点并确认它永远不会被调用。

我什至写了一个非常简单的新包并再次测试它,结果相同。谁能告诉我为什么 PostExecute 不会触发。

我不知道在此处设置变量有任何限制(无论是否有要处理的记录)。

0 投票
1 回答
694 浏览

c# - C# SSIS如何遍历列并设置为null

我需要将任何空字符串列设置为 SSIS 中的实际空值

通常我可以只使用派生列并将其设置为 NULL(DSTR, 18, 1252)

由于我有很多字段并且想一次性完成,因此我决定使用脚本组件来执行此操作。这是到目前为止的代码

但它抛出了这个错误:

[脚本组件 [11692]] 错误:System.NullReferenceException:对象引用未设置为对象的实例。在
Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.HandleUserException(Exception e) 在
Microsoft.SqlServer.Dts.Pipeline.ScriptComponentHost.ProcessInput(Int32 inputID, PipelineBuffer 缓冲区) 在 Microsoft.SqlServer.Dts.Pipeline.ManagedComponentHost.HostProcessInput(IDTSManagedComponentWrapper100 包装, Int32 inputID, IDTSBuffer100 pDTSBuffer, IntPtr bufferWirePacket)

如何在派生列中将其设置为 NULL(type) 的等效项?

0 投票
5 回答
12096 浏览

sql-server - CS2001 执行部署到服务器的 SSIS 包时缺少 AssemblyAttributes.cs

我创建了 SSIS 包并使用 Integration Services 部署向导将其部署到服务器。我将通过 SQL Server 2012 手动访问集成服务目录并右键单击并执行我的包。

但是,包一直失败,当我检查执行报告的消息时,我收到以下错误。

他们似乎在我有脚本组件的数据任务上失败了。

分配:错误:CS2001 - 找不到源文件 'C:\Windows\TEMP.NETFramework,Version=v4.0.AssemblyAttributes.cs', CSC, 0, 0

分配:错误:无法编译包中包含的脚本。在 SSIS 设计器中打开包并解决编译错误。

0 投票
0 回答
411 浏览

c# - 使用列表在 SSIS 脚本组件中

我有两个脚本组件。首先创建列表并将其保存到Variables.customClasslist(System.Object)。当我尝试在第二个脚本组件中读取此变量时,SSIS 给我一个错误。

错误:

[A]System.Collections.Generic.List1[CustomClass] 无法转换为 [B]System.Collections.Generic.List`1[CustomClass]。

类型 A 源自 'mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' 在上下文 'LoadNeither' 的位置'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0 .0__b77a5c561934e089\mscorlib.dll'。

类型 B 源自位置“C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0”上下文“LoadNeither”中的“mscorlib,版本=2.0.0.0,Culture=neutral,PublicKeyToken=b77a5c561934e089” .0__b77a5c561934e089\mscorlib.dll'。

可能将我的 customClass 添加到 ScriptComponent 是问题的根源:

我怎样才能正确地做到这一点?