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

时间:2011-07-15 20:30:17

标签: sql sql-server database tsql 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"'

不幸的是,当我运行此操作时,我收到错误消息

  

'/'

附近的语法不正确

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

我无法找到有关在任何地方使用@command的相应语法的文档 - 我从我找到的某些旧代码中提取/FILE。在作业中运行SSIS包的正确语法是什么?

2 个答案:

答案 0 :(得分:73)

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

  1. 转到SQL Server Management Studio。展开SQL Server Agent并右键点击工作,然后选择New Job...,如屏幕截图# 1 所示。

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

  3. 在步骤部分,点击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),请单击配置选项卡并添加配置文件,如屏幕截图# 5

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

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

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

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

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

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

  13. 所示
  14. 现在,如果您返回SQL作业中的步骤,您应该会在运行方式下拉菜单中看到新创建的代理帐户。请参阅屏幕截图# 14

  15. 希望有所帮助。

    屏幕截图#1:

    1

    屏幕截图#2:

    2

    屏幕截图#3:

    3

    屏幕截图#4:

    4

    屏幕截图#5:

    5

    屏幕截图#6:

    6

    屏幕截图#7:

    7

    屏幕截图#8:

    8

    屏幕截图#9:

    9

    屏幕截图#10:

    10

    屏幕截图#11:

    11

    屏幕截图#12:

    12

    屏幕截图#13:

    13

    屏幕截图#14:

    14

答案 1 :(得分:9)

如果您使用sp_add ... procs构建作业,我认为您需要明确设置要调用的子系统,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"'

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

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

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