2016-11-07 6 views
3

Я обращался к ssis catlog, чтобы узнать имя всех пакетов в каталоге.
Есть только 6 пакетов в проекте Folder1, но запрос дает 9 записейquerying 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 взгляды будут возвращать только активные объекты.

 Смежные вопросы

  • Нет связанных вопросов^_^