各ジョブでパラメータ名が一定であると仮定します。これはそれを行う必要があります。
SELECT F1.command,
O.splitdata
FROM
(
SELECT *,
CAST('<X>'+REPLACE(SUBSTRING(F.command, PATINDEX('%@backuplocation%', F.command), LEN(F.command)), ',', '</X><X>')+'</X>' AS XML) AS xmlfilter
FROM msdb.dbo.sysjobsteps F
WHERE command LIKE '%--Should provide the default location%'
) F1
CROSS APPLY
(
SELECT fdata.D.value('.', 'varchar(100)') AS splitdata
FROM f1.xmlfilter.nodes('X') AS fdata(D)
) O;
をので、例えば、私は私たちのサーバーに対して自分のマシン上でそれを実行する場合:
SELECT F1.command,
O.splitdata
FROM
(
SELECT *,
CAST('<X>'+REPLACE(SUBSTRING(F.command, PATINDEX('%@db_nm%', F.command), LEN(F.command)), ',', '</X><X>')+'</X>' AS XML) AS xmlfilter
FROM msdb.dbo.sysjobsteps F
WHERE F.command like 'exec dba..mnt_sts @db_nm=''msdb'', @sts_object_recompile_fg= 0'
) F1
CROSS APPLY
(
SELECT fdata.D.value('.', 'varchar(100)') AS splitdata
FROM f1.xmlfilter.nodes('X') AS fdata(D)
) O;
を、これは次のように返します。
![enter image description here](https://i.stack.imgur.com/9HKQg.png)
はありがとうございましたあなたの返信。パラメータ値を返さない。その戻りコマンド全体。 – Franklin