我正在尝试为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包的正确语法是什么?
答案 0 :(得分:73)
我在问题中运行了SQL脚本,但没有遇到任何错误。所以,我不确定是什么导致了你的错误。但是,如果您可以通过SQL Server Management Studio访问SQL Server Agent
。以下是使用图形用户界面创建作业的步骤。
转到SQL Server Management Studio。展开SQL Server Agent
并右键点击工作,然后选择New Job...
,如屏幕截图# 1 所示。
提供名称,默认情况下,所有者将是创建作业的帐户,但您可以根据自己的要求进行更改。如果您愿意,可以指定类别并提供说明。请参阅屏幕截图# 2 。
在步骤部分,点击New...
,如屏幕截图# 3 所示。
在“新建作业步骤”对话框中,提供步骤名称。从类型中选择SQL Server Inegration Services Package
。默认情况下,此步骤将在SQL Agent Service Account
下运行。选择包源作为File system
并通过单击省略号浏览到包路径。这将填充Package路径。请参阅屏幕截图# 4 。如果您不希望在 SQL Agent Service Account
下执行该步骤,请参阅步骤# 8 - 9 以了解如何执行您可以使用其他帐户。
如果您有该软件包的SSIS配置文件(.dtsConfig),请单击配置选项卡并添加配置文件,如屏幕截图# 5
点击确定,步骤1中有包,如屏幕截图# 6 所示。同样,您可以创建不同的步骤。
创建作业后,您可以右键单击作业并选择Script Job as --> CREATE To --> New Query Editor Window
生成脚本,如屏幕截图# 7 所示。
要在不同帐户下运行SSIS步骤,请在Management Studio上导航至Security --> right-click on Cedentials --> select New Credential...
,如屏幕截图# 8 所示。
在New Credential
对话框中,提供您希望在SQL作业中执行SSIS步骤的凭据名称,Windows帐户和密码。请参阅屏幕截图# 9 。将创建凭据,如屏幕截图# 10 。
接下来,我们需要创建一个代理。在Management Studio上,导航至SQL Server Agent --> Proxies --> right-click on SSIS Package Execution --> select New Proxy...
,如屏幕截图# 11 所示。
在“新建代理帐户”窗口中,提供代理名称,选择新创建的凭据,提供说明并选择SQL Server Integration Services包,如屏幕截图# 12 所示。应创建代理帐户,如屏幕截图# 13 。
现在,如果您返回SQL作业中的步骤,您应该会在运行方式下拉菜单中看到新创建的代理帐户。请参阅屏幕截图# 14 。
希望有所帮助。
屏幕截图#1:
屏幕截图#2:
屏幕截图#3:
屏幕截图#4:
屏幕截图#5:
屏幕截图#6:
屏幕截图#7:
屏幕截图#8:
屏幕截图#9:
屏幕截图#10:
屏幕截图#11:
屏幕截图#12:
屏幕截图#13:
屏幕截图#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命令。