Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.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
Sql server 重新使用前ssis重置变量_Sql Server_Variables_Ssis_Etl_Sql Server Data Tools - Fatal编程技术网

Sql server 重新使用前ssis重置变量

Sql server 重新使用前ssis重置变量,sql-server,variables,ssis,etl,sql-server-data-tools,Sql Server,Variables,Ssis,Etl,Sql Server Data Tools,我的ssis包中有一个变量@[User::fileExist],如果文件存在,我将使用该变量返回结果 它默认为0,如果文件存在,它将返回1。我决定稍后在软件包中重新使用此变量。在再次使用此变量之前,如何重置此变量您可以使用脚本任务重置变量的值。使用表达式任务 SQL Server 2012或更新版本 可以使用表达式任务来实现这一点。只需将表达式任务添加到包中,并使用以下表达式 @[User::fileExist] = 0 阅读更多@: 使用脚本任务 或者您可以使用脚本任务来实现此目的

我的ssis包中有一个变量
@[User::fileExist]
,如果文件存在,我将使用该变量返回结果


它默认为
0
,如果文件存在,它将返回
1
。我决定稍后在软件包中重新使用此变量。在再次使用此变量之前,如何重置此变量

您可以使用脚本任务重置变量的值。

使用表达式任务 SQL Server 2012或更新版本

可以使用表达式任务来实现这一点。只需将表达式任务添加到包中,并使用以下表达式

@[User::fileExist] = 0
阅读更多@:


使用脚本任务 或者您可以使用脚本任务来实现此目的,只需将脚本任务添加到包中,选择此变量作为
ReadWrite变量
,然后在脚本中编写以下代码(您必须选择Microsoft Visual Basic作为脚本语言):


跳过重置并仅设置它如何:

Dts.Variables["fileExists"].Value = System.IO.File.Exists(filePath);

其中一种标准且更透明的方法是创建序列容器,在其中您希望变量处于活动状态。给他们容器的范围,你将确保在下一次迭代中重新创建它们。

有几种方法。一种是在脚本组件/脚本任务中重置变量它应该在控制流还是数据流下完成?你想把它重置回0吗?为什么要重置?你不能直接覆盖这个值吗?如果某个东西不存在,则将其硬编码为0?@plaidDK我的变量为fileExist,并将值设置为0。我有一个脚本任务,它检查一个文件位置,如果文件存在,那么这个变量设置为1,它在包中沿着不同的路径运行。问题是,我在此之后检查另一个文件,并使用相同的变量,但在以前运行时它已默认为1,因此我想在重新使用之前重置为0,然后在新路径中的脚本任务顶部再次使用它,或者在新路径中创建一个新脚本任务,将其设置为0。您可以使用脚本实现这一点任务,或者如果您的SQL server版本高于2008,则可以使用expression task。我认为你有很好的答案。你试过了吗?我同意你的看法。但是当你回答的时候,你能不能提供一个能让你的回答更好一点的例子:)我会在我觉得可能需要的时候给出例子,但在这种情况下,我觉得在正确的方向上轻推可能就足够了。如果fileExists是数据类型int,那么改为System.IO.File.Exists(filePath)?1:0
Dts.Variables["fileExists"].Value = System.IO.File.Exists(filePath);