Sql-Server
將作業中對驅動器的所有引用替換為另一個驅動器
我有一台伺服器,我的所有 sql 伺服器備份目前都保存到 G: 驅動器。
現在驅動器 G:上沒有足夠的磁碟空間來保存最近 5 天的備份。我已要求在此 G: 驅動器上再添加 100 GB,但這是不可能的,所以他們給了我另一個驅動器,即具有額外磁碟空間的 I: 驅動器,如下圖所示。
現在我需要替換下面 sql server 作業中對 G: 驅動器的所有引用,以指向新的 I: 驅動器。
假設我有 3 台伺服器處於相同的情況,我如何通過 T-SQL 實現這一點?
您可以嘗試這種游標方法從dbo.sysjobsteps讀取行,並在搜尋/替換要更改的字元串後執行sp_update_jobstep 。
這也可以改進為僅更新實際具有字元串的作業步驟。
DECLARE @cmd VARCHAR(max) DECLARE @job_id UNIQUEIDENTIFIER DECLARE @step_id INT DECLARE @command NVARCHAR(max) DECLARE _CURSOR CURSOR LOCAL FORWARD_ONLY STATIC READ_ONLY FOR SELECT job_id ,step_id ,command FROM msdb.dbo.sysjobsteps OPEN _CURSOR FETCH NEXT FROM _CURSOR INTO @job_id ,@step_id ,@command WHILE @@FETCH_STATUS = 0 BEGIN SET @command = replace(@command, 'g:', 'I:') EXEC msdb.dbo.sp_update_jobstep @job_id = @job_id ,@step_id = @step_id ,@Command = @command FETCH NEXT FROM _CURSOR INTO @job_id ,@step_id ,@command END --End While CLOSE _CURSOR DEALLOCATE _CURSOR