我在 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将数据推送到数据库
当我等待bat文件的定义时,我假设该文件看起来像这样
dtexec.exe /file Path\to\package.dtsx
批处理文件位于某个中心位置,例如文件共享 \server\share\ImportData.bat
如果这些假设是正确的,那么您的批处理文件将永远无法工作,因为用户将无权访问
dtexec.exe
,并且您的组织当然不会希望为每个用户的桌面授予 SQL Server 许可,因为这将成为一个非常昂贵的提议。它可以在您的计算机上运行,因为您已经安装了用于开发和运行软件包的工具,但只有您自己。
将其安装到用户桌面似乎是解决错误的快速方法,但它不会解决许可问题,因为您将使用开发人员许可证运行生产工作负载,并且在审核时,这是故意的违规程度与意外违规的程度相比,会变得昂贵。
这要看情况!在最简单的层面上,包总是会从静态位置获取一个具有静态名称的文件,然后我
也许类似
sqlcmd -S myserver -d msdb -Q "EXECUTE dbo.sp_start_job 'Run_ye_package'"
假设用户有权登录数据库并启动作业(操作员角色)。他们可能没有这个,所以现在你要解决“我如何让我的用户与数据库对话”的问题,也许你授予他们访问权限。也许您创建一个只能运行单个代理作业的中性 SQL 帐户,并将明文凭据嵌入到 bat 文件中。
如果不知道您的组织如何运作、他们的安全状况以及有关如何执行此导入的要求,则很难具体说明您应该做什么。