【发布时间】:2017-01-29 18:56:43
【问题描述】:
我们有一项任务,需要自动将 excel 文件转换为 csv 文件,以准备将其加载到 SQL 数据库中。开发人员将此过程构建到一个 SSIS 包中。对于转换,他们最初尝试让 SSIS 包中的任务执行 VBscript 来转换文件。当他们在本地机器上运行它时,它工作正常。当他们通过服务器上的 VS 手动运行包时,它运行正确。当他们通过集成目录手动运行包时,它运行正确。我们作为我们的帐户和服务帐户都这样做了,并且得到了相同的结果。但是,当我们将其安排为作业时,它会挂在执行 VBScript 的进程部分。没有错误,它只会挂起,直到你终止工作。
作业作为服务帐户执行,该服务帐户具有服务器上的完全管理员访问权限、对存储和转换文件的共享(位于同一服务器上)的显式完全访问权限以及对 SQL 的完全管理员访问权限。作业所有者设置为使用服务帐户的 sa。所有的工作就是从集成目录中执行包,如果你独立于一个工作运行它,它就可以工作。当我们将使用服务帐户在集成目录中手动运行的 ssisdb 执行报告与作业运行进行比较时,它们看起来相同,除了作业挂在转换任务上而另一个没有。
在花了一些时间试图解决这个问题后,开发人员尝试了不同的解决方案。他们将转换脚本从使用 VBScript 更改为使用 C#。他们从那里的本地机器运行包,并且包再次工作。这次他们在服务器上手动运行它失败了。当我们从集成目录运行它时它失败了,当我们从一个作业运行它时它失败了。
我们不断收到的错误是“创建 CSV 文件:错误:调用目标已引发异常” 在花了几个小时研究此错误之后,似乎没有任何建议有效。
我们还在新构建的服务器上尝试了这些相同的解决方案,以确保我们没有处理可能已更改的奇怪配置设置(它是一个开发服务器)并且它仍然在那里失败。
在这一点上,我们对正在发生的事情感到迷茫。第一个解决方案有效,但由于某种原因永远无法作为工作。第二种解决方案在任何地方都可以使用,除非在服务器上运行。
我们正在寻找其他一些解决方案来尝试解决这个问题。接下来的事情可能是尝试使用 powershell 来转换文件,但不确定这是否会让我们回到同样的问题。各位大侠的任何建议都将不胜感激
另外,我们使用的是 SQL Server 2012 dev edition、VS 2012 pro、Windows Server 2012 R2
【问题讨论】:
-
这听起来像是在一个环境中有效的路径在另一个环境中无效的问题。确保您使用包中任何位置引用的每个文件的通用路径。
-
当我们从本地机器执行它(针对开发服务器执行)时,它可以工作。在使用 VBScript 的情况下,它可以在服务器上运行,除了设置为作业。一切都在 Dev ,路径,文件等上设置,并且它们在任何时候都不会改变。不确定我是否在关注,如果我在您所说的内容中遗漏了什么,请告诉我。谢谢。
-
另外,包装上没有参数,此时所有内容都是硬编码的,所以我们在调度时无需设置。
-
是的,我的意思是你的开发机器上可能存在一个文件路径,然后当你将包移动到另一台服务器时,该文件路径不存在或不能无法从该服务器访问。可能是因为权限。
-
可能是关于为什么它在代理中不起作用的各种问题stackoverflow.com/a/26122982/181965stackoverflow.com/a/37870251/181965 我们需要更多地了解解决方案以提供任何现实的建议,也就是发布最小复制他们在做什么
标签: sql sql-server visual-studio-2012 ssis sql-server-2012