2016-11-07 11 views
3

私はカタログ内のすべてのパッケージの名前を見つけるためにssis catlogに問い合わせていました。
ありFolder1にプロジェクトの唯一の6のパッケージがありますが、クエリは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ビューは、アクティブなオブジェクトのみを返します。

関連する問題