Запрос ssisdb, чтобы найти имя пакетов
Я запрашивал slog catlog, чтобы узнать имя всех пакетов в каталоге.
В проекте Folder1 всего 6 пакетов, но запрос дает 9 записей
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;
Это отражает то, что Папки содержат Проекты, а Проекты содержат Пакеты, что обеспечит точный "адрес" для данного пакета.
[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
Представления будут возвращать только активные объекты.