【发布时间】:2014-09-24 22:07:54
【问题描述】:
我已经组合了一个 SSIS 包并将其部署到 SQL 服务器。这个包需要按需运行,并且需要传递给它的值、批号和请求数据的人的用户 ID。我花了相当多的时间研究如何传递值,但找不到任何我可以使用的东西。最简单的方法是从存储过程执行 xp_cmdshell 或直接从应用程序调用 DTEXEC,但在这种情况下不能使用这些。该公司已确定 xp_cmdshell 存在太大的安全风险,并且并非每个用户都将拥有直接调用 DTEXEC 的必要权限,该公司也没有在每个用户的计算机上安装二进制文件并使程序包在本地运行所需的许可证.
所有这些都引出了一个问题:如何将值传递到 SSIS 包中?
我已经研究过使用 SQL 作业,因为它们可以修改包中的变量,但后来我不得不将值放入作业中,并且没有找到任何直接执行此操作的方法。我已经看到它建议使用表格并让包从那里获取值,但这留下了如何处理试图同时运行包的多个人的问题。
另外,如果有人想知道这个包在做什么,它正在做一堆模糊查找,因为我们只使用 SQL 标准,我没有选择从 T-SQL 中做模糊的东西通过主数据服务。想法?
【问题讨论】:
-
一种方法是使用table as a queue。所以第一步它只是将顶部项目出列并处理它。除非您有多个 SQL 代理作业,否则您不会运行多个包实例。
-
这个网站能回答你的问题吗:bidn.com/blogs/DevinKnight/ssis/1655/…?
-
您也无法选择使用模糊组件,因为这些是企业版功能。 Supported features by edition 模糊的东西大约是页面下方的 55%
-
billinkc - 这可能是指 T-SQL 中的模糊功能。根据msdn.microsoft.com/en-us/library/ms137786%28v=sql.100%29.aspx Zoff Dino,SSIS 的模糊功能至少可以追溯到 2005 年版本 - 这是我找到的关于如何将值传递到工作包中的站点,但我找不到任何关于将值传递到工作。 Martin Smith - 我考虑过这一点,但我在整理包中的逻辑时遇到了问题,这样如果提交的查询彼此非常接近,就不会错过。
-
billinkc 的评论是关于 edition(企业/标准/Express 等)而不是版本(2005/2008/2012 等)。请注意,开发者版与企业版具有相同的功能集,因此在部署之前您可能不会遇到问题。
标签: sql-server-2008 ssis sql-job