SSIS 2014 - 地图 NFS

SSIS 2014 - 地图 NFS

我们正在将 SSIS 从 SQL 2008 迁移到 SQL2014。

  • 旧操作系统:WINDOWS 2008 R2 SP1
  • 新操作系统:WINDOWS 2012 R2

我使用Execute Process Task将 NFS 共享映射到驱动器。

  • 可执行文件:C:\Windows\System32\net.exe
  • 参数:使用 Q: :/vol/

当我在普通 CMD(64 位)中执行此命令时,它就可以工作。

当我从 SSIS 运行它时,它失败并显示错误代码“2”。

经过一番挖掘,我发现当我从 32 位 CMD 或 32 位 powershell 运行“net use”命令时它也会失败。

所以它似乎只能在 64 位上运行。

我在 Google 上搜索并检查了 SSIS,发现标志“Run64BitRuntime”已设置为“True”。此外,新机器上还安装了“集成服务”。

NFS Client 当然也安装了。

当我们将整个项目从一台服务器复制到另一台服务器时,我找不到旧服务器上的包和新服务器上的包之间的区别。

我希望有人能帮助我找到解决方案。解决方案中不需要“net use”命令。

如果有其他更好的方法来访问 NFS 共享,那么我会尝试。

答案1

我找到了一个解决方法。

在SSIS“执行进程任务”中:

  • 可执行文件:C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe
  • 参数:C:\path\to\script\CreateMapping.ps1

在“CreateMapping.ps1”中:

& (join-path ($pshome -replace "syswow64", "sysnative") powershell.exe) -Command { net use Q: <IP>:/vol/.... }

它实际上做了什么:

  1. 在 powershell 环境中从 SSIS 运行脚本。
  2. 打开一个新的 Powershell 会话,但将新的会话设置为 64 位
  3. 从 64 位版本运行“Net use”命令。

另外,我还阅读了一些其他命令来从 32 位 powershell 完成 64 位 powershell,但这是唯一对我有用的命令。

相关内容