2016-11-07 59 views
3

我在查詢ssis catlog以找出目錄中所有軟件包的名稱。
只有6個在Folder1中成套項目,但查詢提供了9條查詢ssisdb以查找軟件包的名稱

1. SELECT P.NAME FROM SSISDB.internal.projects PRJ INNER JOIN 
    SSISDB.internal.packages P ON 
    P.project_version_lsn=PRJ.object_version_lsn WHERE 
    PRJ.NAME='Folder1' 

是否顯示從該項目中刪除的包爲好。

回答

2

他們不會被刪除,這是歷史追蹤的一部分。你可能想查詢更類似於

SELECT 
    F.name AS FolderName 
, P.name AS ProjectName 
, PKG.name AS PackageName 
FROM 
    ssisdb.catalog.folders AS F 
    INNER JOIN 
     SSISDB.catalog.projects AS P 
     ON P.folder_id = F.folder_id 
    INNER JOIN 
     SSISDB.catalog.packages AS PKG 
     ON PKG.project_id = P.project_id 
ORDER BY 
    F.name 
, P.name 
, PKG.name; 

這反映了文件夾中包含的項目和項目包含包,以便將針對給定的包提供確切的「地址」。

3

[SSISDB].[internal].[packages]表和其他internal表可以包含多個版本的包。

您應該使用catalog的意見。

SELECT [projects].[name], [packages].[name], * 
FROM [SSISDB].[catalog].[packages] 
INNER JOIN [SSISDB].[catalog].[projects] 
    ON [packages].[project_id] = [projects].[project_id] 
ORDER BY [packages].[name] 

catalog視圖將只返回活動對象。