2016-11-07 22 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视图将只返回活动对象。