使用 tsql 通过 ssis 步骤创建作业

creating job with ssis step using tsql

我想使用存储过程创建 sql 服务器作业,但我似乎做不好。 集成服务目录 -> SSIDB -> Cat1 ->项目->999->包->999.dtsx

在第 1 步中,Package 选项卡 "Server: and Package:" 上以下脚本的属性为空,我需要填充这些属性并将 32 位设置为 true

下面是我得到的,先谢谢了

EXECUTE msdb..sp_add_job @job_name = 'Job 1', @owner_login_name = SUSER_NAME(), @job_id = @JobId OUTPUT

EXECUTE msdb..sp_add_jobserver @job_id = @JobId, @server_name = @@SERVERNAME

EXECUTE msdb..sp_add_jobstep @job_id = @JobId, @step_name = 'Step1',@database_name = DB_NAME(), @on_success_action = 3 ,@subsystem = N'ssis'
, @command = N' "\SSISDB\Cat199.dtsx" @SERVER=N"@ServerName"'

EXECUTE msdb..sp_add_jobstep @job_id = @JobId, @step_name = 'Step2', @command = 'execute msdb..sp_delete_job @job_name="Job 1"'

EXECUTE msdb..sp_start_job @job_id = @JobId

虽然我们正在等待对现有语法的澄清,但您需要关注的 msdb..sp_add_jobstep 的两个参数是 @subsystem 和 @command。

,   @subsystem = N'SSIS'
,   @command = N'/ISSERVER "\"\SSISDB\POC\SSISConfigMixAndMatch\Package.dtsx\"" /SERVER "\".\dev2014\"" /X86 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 /Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E'

GUI 会愉快地构建这些选项,但您可以阅读 dtexec 文档并使用相同的脚本。

  • /ISSERVER 这指定我们正在使用 SSISDB 中内置的奇特的新执行引擎
  • 我们将要执行的包传入这个选项
  • /SERVER 在哪里可以找到这些包
  • 指定服务器名称和可选实例
  • /X86 正如精美的文档所述,此选项 适用于从 SQL Agent 调用,但这是您指定需要使用 32 位 dtexec.exe
  • /Par 根据需要指定参数值
  • 表示我们的标准,Basic,日志级别
  • /Par 的下一个实例指定调用者是否应等待进程完成(同步进程与异步进程)。是的,作业步骤应等待流程完成。
  • /Reporting 应该报告什么信息。这很奇怪,因为您以前在 SQL 代理工作报告中获得的有用信息不再存在。它只会说咨询 SSISDB 报告以获取更多信息
  • E,仅报告错误。

如果其他人遇到类似情况,最简单的方法是使用 UI(服务器代理 -> 新工作)创建工作。创建您想要查看的所有内容,保存,然后右键单击作业 Script Job As -> Create To -> New query 然后 sql 服务器会将作业导出为查询,这样您就可以看到您需要做什么.