0

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

4

2 回答 2

0

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

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

于 2013-02-26T23:29:03.320 回答
0

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

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

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

于 2013-02-28T08:27:04.060 回答