如何在我的SQL Server代理作业中创建一个将运行我的SSIS包的步骤?

Sli*_*345 26 sql t-sql database sql-server ssis

我正在尝试为SQL Server代理创建一个自动作业来运行.该工作应该运行我的SSIS包.

这是我到目前为止所拥有的:

EXEC sp_add_job @job_name = 'My Job'
            ,@description = 'My First SSIS Job'
            ,@job_id = @jobid OUTPUT

EXEC sp_add_jobstep @job_id =@jobid
                    ,@step_name = N'Upload Data'
                    ,@step_id = 1
                    ,@command=N'/FILE "D:\Installs\Upload.dtsx"'
EXEC sp_add_jobstep @job_id = @jobid
                    ,@step_name = N'Download Data'
                    ,@step_id = 2
                    ,@command=N'/FILE "D:\Installs\Download.dtsx"'
Run Code Online (Sandbox Code Playgroud)

不幸的是,当我运行这个时,我得到一个错误说

'/'附近的语法不正确

我怀疑它/FILE在我的命令中抱怨.

我无法在任何地方找到有关在@command中使用的适当语法的文档 - 我从中找到/FILE了一些我发现的旧代码.在作业中运行SSIS包的正确语法是什么?

小智 73

我在问题中运行了SQL脚本,但没有遇到任何错误.所以,我不确定是什么导致了你的错误.但是,如果您可以SQL Server Agent通过SQL Server Management Studio 进行访问.以下是使用图形用户界面创建作业的步骤.

  1. 转到SQL Server Management Studio.展开SQL Server Agent并右键单击Jobs,然后选择New Job...屏幕截图#1中所示.

  2. 默认情况下,提供名称和所有者将是创建作业的帐户,但您可以根据自己的要求进行更改.如果您愿意,可以指定类别并提供说明.参见截图#2.

  3. 在Steps部分,单击New...屏幕截图#3中所示.

  4. 在"新建作业步骤"对话框中,提供步骤名称.SQL Server Inegration Services Package从类型中选择.此步骤SQL Agent Service Account默认运行.选择包源,File system然后单击省略号浏览到包路径.这将填充Package路径.参见截图#4.如果您不希望在该步骤下执行该步骤SQL Agent Service Account,请参阅步骤#8 - 9以了解如何使用其他帐户.

  5. 如果您有一个包的SSIS配置文件(.dtsConfig),请单击Configurations选项卡并添加配置文件,如屏幕截图#5所示.

  6. 单击确定,步骤1中有包,如屏幕截图#6所示.同样,您可以创建不同的步骤.

  7. 创建作业后,您可以右键单击作业并选择Script Job as --> CREATE To --> New Query Editor Window生成脚本,如屏幕截图#7所示.

  8. 要在Management Studio下的不同帐户下运行SSIS步骤,请导航到Security --> right-click on Cedentials --> select New Credential...屏幕截图#8所示.

  9. New Credential对话框中,提供您希望在SQL作业中执行SSIS步骤的凭据名称,Windows帐户和密码.参见截图#9.将创建凭据,如屏幕截图#10所示.

  10. 接下来,我们需要创建一个代理.在Management Studio上,导航到SQL Server Agent --> Proxies --> right-click on SSIS Package Execution --> select New Proxy...屏幕截图#11中所示.

  11. 在"新建代理帐户"窗口中,提供代理名称,选择新创建的凭据,提供说明并选择SQL Server Integration Services Package,如屏幕截图#12所示.应创建代理帐户,如屏幕截图#13所示.

  12. 现在,如果您返回SQL作业中的步骤,您应该在Run as下拉列表中看到新创建的Proxy帐户.参见截图#14.

希望有所帮助.

截图#1:

1

截图#2:

2

截图#3:

3

截图#4:

4

截图#5:

五

截图#6:

6

截图#7:

7

截图#8:

8

截图#9:

9

截图#10:

10

截图#11:

11

截图#12:

12

截图#13:

13

截图#14:

14

  • 谢谢 Siva,这是对我的问题最完整的答案。 (2认同)

Dav*_*veE 9

如果你使用sp_add ... procs构建作业,我认为你需要显式设置要调用的子系统,a la

EXEC sp_add_jobstep @job_id = @jobid,
@step_name = N'Upload Data',
@step_id = 1,
@subsystem = 'DTS',
@command=N'/FILE "D:\Installs\Upload.dtsx"'
Run Code Online (Sandbox Code Playgroud)

这相当于@ Siva的屏幕截图#4'Type'='SQL Server Integration Services Package'.

有关子系统的完整列表,请参阅 MSDN文章.

编辑:'TSQL'是默认值,因此您当前的设置是尝试执行'/ FILE"D:\ Installs\Upload.dtsx"'作为T-SQL命令.