Sql-Server
執行 sp_update_jobstep 以更改 SQL 代理作業步驟類型
當我打算對我們的 Ola Hallengren 索引腳本進行更改時,我注意到在一些 SQL Server 上,我們將索引作業作為“作業系統 (CmdExec)”步驟執行,而不是被稱為“Transact-SQL 腳本 (T- SQL)”步驟。
我正在使用 CMS 來部署它,
sp_update_jobstep
並且我希望一切都作為“Transact-SQL 腳本(T-SQL)”。似乎沒有辦法更改步驟(除非我在這篇 Microsoft 文章中混淆了術語)
use msdb go exec sp_update_jobstep @job_name = N'IndexOptimize_USER_DATABASES', @step_id = 1, @command = N'EXECUTE [dbo].[IndexOptimize], @Databases = ''USER_DATABASES'', @LogToTable = ''Y'', @LockTimeOut = 300'
有沒有辦法改變步驟類型?
您可以使用 的
@subsystem=N'TSQL'
參數sp_update_jobstep
來更改 Step-Type。有關有效子系統值的列表,請參閱sp_add_jobstep 。例子:
EXEC msdb.dbo.sp_update_jobstep @job_name = N'test' ,@step_id = 1 ,@subsystem = N'TSQL' ,@command = N'EXECUTE [dbo].[IndexOptimize], @Databases = ''USER_DATABASES'', @LogToTable = ''Y'', @LockTimeOut = 300'
更一般地說,如果您想為代理作業編寫更改腳本並且您不確定如何 - 您可以使用
⎎ Script ▾
GUI 中的按鈕將您在目前會話中進行的所有更改編寫腳本。例如,如果我想將同一個作業更改
IndexOptimize_USER_DATABASES
為不再登錄到表,我會按照下面的螢幕截圖步驟進行操作………這會給我一個帶有以下文本的新查詢視窗。
USE [msdb] GO EXEC msdb.dbo.sp_update_jobstep @job_id=N'cbbf1dc7-d128-499e-91d3-4df88ada2e5f', @step_id=1 , @command=N'EXECUTE [dbo].[IndexOptimize] @Databases = ''USER_DATABASES'', @LogToTable = ''N''' GO