2016-09-15 52 views
0

有沒有辦法找到代理運行步驟正在運行的SSIS包的名稱。我嘗試了下面的查詢來獲取命令。但它顯示了整個命令以及路徑和名稱。我只需要包名。例如,下面的結果是'ABCDEFG.dtsx'。sql服務器查詢找到SSIS運行代理的名稱套件

USE MSDB GO SELECT命令將從sysjobsteps其中子系統= 'SSIS' GO

結果:/ FILE 「\」 L:\包\ ABCDEFG.dtsx \ 「」/ OFF CHECKPOINTING /報告Ë

有沒有辦法只從上面的結果中獲取包名。感謝你的幫助。謝謝。

回答

0

使用可以使用字符串處理來提取名稱。就像在結果中查找字符串「.dtsx」的第一次出現一樣。這會給索引。從開始到該索引結果做一個子字符串。然後在子字符串中找到最後一次出現的「\」。它會再次在字符串中給出「\」的位置。現在你可以爲字符串的其餘部分做一個子字符串。

假設@result變量包含查詢的輸出。

DECLARE @stringIndex INT 
DECLARE @remainingString VARCHAR(100) 

SELECT @stringIndex = CHARINDEX('.dtsx', @result) 
SELECT @remainingString = SUBSTRING(@result, 1, @stringIndex) 
SELECT @remainingString = REVERSE(@remainingString) 
SELECT @stringIndex = CHARINDEX('/', @remainingString) 
SELECT @remainingString = SUBSTRING(@remainingString, 1, @stringIndex) 
SELECT @remainingString = REVERSE(@remainingString) 

以上查詢應該適合您。由於SQL Server沒有像最後一個索引那樣的東西,我用REVERSE作爲替代。