Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ScriptBuffer.AddRow()无法访问,因为它在SSIS中的异步C#脚本组件中具有保护级别_C#_Sql Server_Xml_Ssis - Fatal编程技术网

ScriptBuffer.AddRow()无法访问,因为它在SSIS中的异步C#脚本组件中具有保护级别

ScriptBuffer.AddRow()无法访问,因为它在SSIS中的异步C#脚本组件中具有保护级别,c#,sql-server,xml,ssis,C#,Sql Server,Xml,Ssis,我有一个异步脚本转换组件,我在其中解析数据库表中的一些XML,以便随后将不同结构的数据导出到另一个数据库表。到目前为止,它运行良好,调用了Output0Buffer.AddRow(),并将outputbuffer的列值设置为输出数据。但是,SSIS突然拒绝编译脚本,并将我对Output0Buffer.AddRow()的调用标记为红色,并表示 错误:“Microsoft.SqlServer.Dts.Pipeline.ScriptBuffer.AddRow()”由于其保护级别而不可访问 对AddRo

我有一个异步脚本转换组件,我在其中解析数据库表中的一些XML,以便随后将不同结构的数据导出到另一个数据库表。到目前为止,它运行良好,调用了Output0Buffer.AddRow(),并将outputbuffer的列值设置为输出数据。但是,SSIS突然拒绝编译脚本,并将我对Output0Buffer.AddRow()的调用标记为红色,并表示

错误:“Microsoft.SqlServer.Dts.Pipeline.ScriptBuffer.AddRow()”由于其保护级别而不可访问

对AddRow()的调用仍然在脚本中的相同位置,我没有进行任何新的调用

在搜索答案的过程中,我发现了Outpuffer出现问题的两个常见疑点:第一个是脚本组件是同步的,第二个是用户试图访问的任何内容的访问器都过于严格。我的脚本仍然是异步的,并且我没有对AddRow()的访问器做任何修改(这是BufferWrapper.cs中的一个公共方法)。所以这些都不是问题

然而,改变的是,我在脚本转换编辑器的outputbuffer中添加了新的输出列,这些输出的名称中有句点,例如“1.10”(没有引号)。当我键入“Output0Buffer.”并检查自动完成列表时,我可以看到其他Output列的名称,但不能看到名称中带有句点的列(它们在脚本转换编辑器中位于最后)

我在想,可能是周期问题,但我一直在搜索,似乎找不到SSIS脚本组件输出列中哪些名称有效的答案。我还认为/希望SSIS会在脚本编辑器中告诉我输出列名是否非法,但在那里没有说明任何内容

我不想更改输出列的名称,因为它们有很多,我正试图使用反射将XML blob中的数据与这些输出列匹配。XML blob中的数据有这些类型的名称(例如“1.10”,不带引号),我认为如果解析的数据和输出列不能有匹配的名称,那么会更加混乱


那么,是什么原因导致AddRow()调用无法访问呢?

正如所怀疑的那样,问题在于Output列的命名。重命名列解决了这个问题。使用以字母开头且不包含句点的列名


我用输出列名做了一些小测试。如果输出列的名称以数字开头,则它们在脚本组件中不可见,因此根本无法使用。如果以字母开头但包含句点,则在“自动完成”列表中仅显示名称中直到但不包括句点的部分。这使得它们对我来说毫无用处,因为我想用我指定的完整列名来使用反射,但我不确定它们是否可以用于其他目的。

@billinkc“检查第38行”?“这是什么意思?”比林克我补充了我的答案。