sql-server - 通过 SQL Server 代理运行的 SSIS 包无法修改变量
问题描述
首先是基础知识:我正在使用 VS2015 SSDT 创建一个 SSIS 包来获取 DFSR 共享(Windows 2012 R2)上的两个文件,然后将其导入 SQL Server 2016 数据库。该包通过 SQL Server 代理运行。SQL Server 代理在对 DFSR 文件夹和后续文件具有权限的域帐户下运行。
问题:我遇到了一个奇怪的问题,我似乎已经减少到让 SSIS 脚本任务无法更改 SSIS 变量的值。
我有一个脚本任务,它使用 VB2015 检查两个文件是否存在。文件路径使用变量来构建完整路径,然后检查两者是否存在。如果它们都存在,它将变量设置为“True”然后存在。这在测试功能时在 VS2015 SSDT 中运行得很好,但在 SQL Server 代理下运行时变量不会改变。
这是代码:
Public Sub Main()
Dim filepath As String = CStr(Dts.Variables("User::varFileDirectory").Value)
Dim emplfile As String = filepath + CStr(Dts.Variables("User::varEmployeeCSVFile").Value)
Dim histfile As String = filepath + CStr(Dts.Variables("User::varHistoryCSVFile").Value)
If (File.Exists(emplfile) AndAlso File.Exists(histfile)) Then
Dts.Variables("User::varFilesExist").Value = True
Else
Dts.Variables("User::varFilesExist").Value = False
End If
Dts.TaskResult = ScriptResults.Success
End Sub
如果在文件夹中找到文件,则将 User::FilesExist 设置为“True”,然后在后续约束中用作表达式:
我在从 SSDT 2015 进行测试时通过了此约束,但是一旦将其部署到 SQL Server 2016 上的 SSIS 存储库,当那里有文件时,它就不再通过此约束。
我通过简单地将“User::varFilesExist”的默认值设置为“True”来验证我的包运行。完成此操作后,该包将从 SQL Server 代理完美运行。在第一次运行时,它会删除已加载的文件,因此当它第二次运行时,由于这些文件不存在而失败。
我觉得我遗漏了一些简单的东西,但脚本似乎没有更改/更新脚本中“User::FilesExist”的值。我相信我的 VB2015 代码是正确的,因为它在 VS2015 SSDT 中运行时测试得很好
解决方案
今天我安装了 SSDT 2017 并带来了我的包。测试然后部署,一切都按预期工作。不知道发生了什么。
推荐阅读
- r - 有条件地设置 RowGroup 样式
- javascript - 如果我设置 dev-server 的 contentBase 路径,webpack 不会提供更新的文件
- python-docx - 我对 Python 编程非常陌生,并且对 python-docx 有疑问:paragraph.py 中的函数 add_r() 在哪里定义?
- javascript - 模拟导出为对象的 ES6 类模块
- core-data - 添加具有重复项的唯一约束的核心数据崩溃
- ffmpeg - 简单的 hls 服务器 - 从本地 NAS 流式传输
- algorithm - 到达目的地的最短天数 | 图形
- flutter - 面对 sliver appbar 的 RenderFlex 溢出问题
- java - Java 与 python AES PBKDF2。为什么输出不同?
- javascript - Uploading an Array to Firestore