将连接信息和参数从vb.net传递到基于服务器的SSIS作业

时间:2013-02-26 21:09:18

标签: database sql-server-2008 parameters ssis vb.net-2010

在审查了所有不同的选项后,我仍然感到困惑。 这是场景。我们在同一台服务器上有多个数据库,我们希望单个SSIS作业处理从文件导入(或导出)到表中。我们从vb.net调用它,并且该作业正在服务器上的SSIS上运行。我们没有xp_cmdshell可用。 我们需要传递给作业唯一的作业信息(可能有2个人可以在同一个数据库上或同一服务器上的不同数据库上运行相同的作业),数据库连接信息(这不能存储和选择作业,因为可以根据需要添加/删除数据库,我们不想重新配置作业)和文件名/路径(在SSIS上可用的服务器或允许的UNC路径上)。
我们已经查看了声明作业/作业步骤然后直接执行作业的选项。我们喜欢这个想法,因为Jobs是唯一的,我们可以通过作业ID将作业调用报告问题的sql proc返回到公共日志表,然后可以查看。
我真正关注的是如何传递这份工作所需要的信息 在http://code.msdn.microsoft.com/Calling-a-SSIS-Package-a35afefb中,我看到他们使用set命令传递参数,但是我对两次处理事件的调用的解释感到困惑。此外,在该示例中,我是否会在添加作业步骤中将主数据库引用更改为我的数据库? 我的问题是,没有任何示例真正干净简单的传递参数和更改数据库,很多使用不同的选项,如从数据源处理的数据库列表,没有一个真正干净地告诉我如何处理将传递的变量到一个叫做存储过程。
我没有时间深入研究和实验,我需要看看它是如何完成的,因为我试图在一个层面上理解它,所以我知道我们如何利用它并适合我们需要使用的信息(即什么我需要连接信息来动态分配它吗?因为我需要知道它以了解在宏计划中我获取该信息的位置。 (我们不会在实际的DB中存储它,我们在中央数据库中有一个存储库,但我不确切知道我需要存储什么!) 布莱恩

2 个答案:

答案 0 :(得分:0)

对单个作业运行动态的参数可以通过配置表传递到SSIS包。启动作业的进程在启动作业之前在配置表中设置任何必要的参数。该作业将启动SSIS包,该包具有一个连接管理器,用于读取配置表中的值以及SSIS包中的参数值。

您提到您有数据库连接信息,如果您选择通过表传入参数,请记住将SQL登录信息存储在数据库中是不好的做法。 SSIS包中的连接管理器应使用Windows身份验证,并且可以将SSIS包所需的权限授予SQLAgent服务帐户。

答案 1 :(得分:0)

根据我的理解,您希望通过SQLAgent作业运行一个包(或多个包),它将运行的数据库可能会发生变化。

正如supergrady所说,你可以通过配置表将特定参数传递给包。

我所做的是创建一个配置表并添加一个状态列(一个指示开/关,真/假的位)。这允许我运行一个sql脚本来设置我想要的特定数据库的状态,并关闭那些我不想要的数据库。对我来说,这比打开工作和摆弄命令行值更容易,这是另一种获得你想要的方式。我希望这有帮助