BAT 文件触发的 SSIS 包失败:由于错误 0x80040154,无法创建 DTS.Application

问题描述 投票:0回答:1

我在 Visual Studio 2019 中创建了一个 SSIS 包,用于将数据从 Excel 文件传输到数据库表。 我正在使用 BAT 脚本来触发 ssis 包。作为包的创建者,我可以成功执行该包,但共享文件夹上的其他用户无法执行该包。

他们收到以下错误:

Started:  10:03:02 AM
Could not create DTS.Application because of error 0x80040154
Started:  10:03:02 AM
Finished: 10:03:02 AM
Elapsed:  0 seconds
SSIS Package execution failed. Error code: 1

我已经将我的 SSIS 转换为仅使用 32 位,并确保我的 DTExec 也是 32 位。

提前致谢

我希望共享文件夹的用户能够触发SSIS将数据推送到数据库

batch-file ssis
1个回答
0
投票

当我等待bat文件的定义时,我假设该文件看起来像这样

dtexec.exe /file Path\to\package.dtsx

批处理文件位于某个中心位置,例如文件共享 \server\share\ImportData.bat

如果这些假设是正确的,那么您的批处理文件将永远无法工作,因为用户将无权访问

dtexec.exe
,并且您的组织当然不会希望为每个用户的桌面授予 SQL Server 许可,因为这将成为一个非常昂贵的提议。它可以在您的计算机上运行,因为您已经安装了用于开发和运行软件包的工具,但只有您自己。

将其安装到用户桌面似乎是解决错误的快速方法,但它不会解决许可问题,因为您将使用开发人员许可证运行生产工作负载,并且在审核时,这是故意的违规程度与意外违规的程度相比,会变得昂贵。

如何让用户临时运行 SSIS 包?

这要看情况!在最简单的层面上,包总是会从静态位置获取一个具有静态名称的文件,然后我

  • 创建 SQL 代理作业来运行包
  • 为用户创建运行作业的机制(重用您的bat文件)

也许类似

sqlcmd -S myserver -d msdb -Q "EXECUTE dbo.sp_start_job 'Run_ye_package'"

假设用户有权登录数据库并启动作业(操作员角色)。他们可能没有这个,所以现在你要解决“我如何让我的用户与数据库对话”的问题,也许你授予他们访问权限。也许您创建一个只能运行单个代理作业的中性 SQL 帐户,并将明文凭据嵌入到 bat 文件中。

如果不知道您的组织如何运作、他们的安全状况以及有关如何执行此导入的要求,则很难具体说明您应该做什么。

© www.soinside.com 2019 - 2024. All rights reserved.