2013-07-22 3 views
0

У меня возникла проблема с поиском физического пути пакета SSIS, потому что я передаю работу someones, а имя пакета в SSIS отличается от диска. Есть много SSIS, и трудно найти правильный. Я нашел решение, которое отображает все пакеты bu, нет информации о физическом пути. Пожалуйста, прекратите.Физический путь SSIS

with ChildFolders 
as 
(
    select PARENT.parentfolderid, PARENT.folderid, PARENT.foldername, 
     cast('' as sysname) as RootFolder, 
     cast(PARENT.foldername as varchar(max)) as FullPath, 
     0 as Lvl 
    from msdb.dbo.sysssispackagefolders PARENT 
    where PARENT.parentfolderid is null 
    UNION ALL 
    select CHILD.parentfolderid, CHILD.folderid, CHILD.foldername, 
     case ChildFolders.Lvl 
      when 0 then CHILD.foldername 
      else ChildFolders.RootFolder 
     end as RootFolder, 
     cast(ChildFolders.FullPath + '/' + CHILD.foldername as varchar(max)) 
      as FullPath, 
     ChildFolders.Lvl + 1 as Lvl 
    from msdb.dbo.sysssispackagefolders CHILD 
     inner join ChildFolders on ChildFolders.folderid = CHILD.parentfolderid 
) 
select F.RootFolder, F.FullPath, P.name as PackageName, 
    P.description as PackageDescription, P.packageformat, P.packagetype, 
    P.vermajor, P.verminor, P.verbuild, P.vercomments, 
    cast(cast(P.packagedata as varbinary(max)) as xml) as PackageData 
from ChildFolders F 
    inner join msdb.dbo.sysssispackages P on P.folderid = F.folderid 
order by F.FullPath asc, P.name asc; 

ответ

0

Я нашел обходное решение для этого. Я просто creatednew проекта SSIS в Visual Studio, и есть возможность добавить существующий SSIS пакет:

enter image description here

Тогда я просто зашел на сервер, где хранятся пакеты:

enter image description here

и переместился в пакет, который я искал.

1

Мой SSIS Package Query похож на ваш. Разница между вашим путем и моим заключается в том, что у меня есть обратная косая черта для пути, тогда как вы используете косую черту.

; 
WITH FOLDERS AS 
(
    -- Capture root node 
    SELECT 
     cast(PF.foldername AS varchar(max)) AS FolderPath 
    , PF.folderid 
    , PF.parentfolderid 
    , PF.foldername 
    FROM 
     msdb.dbo.sysssispackagefolders PF 
    WHERE 
     PF.parentfolderid IS NULL 

    -- build recursive hierarchy 
    UNION ALL 
    SELECT 
     cast(F.FolderPath + '\' + PF.foldername AS varchar(max)) AS FolderPath 
    , PF.folderid 
    , PF.parentfolderid 
    , PF.foldername 
    FROM 
     msdb.dbo.sysssispackagefolders PF 
     INNER JOIN 
      FOLDERS F 
      ON F.folderid = PF.parentfolderid 
) 
, PACKAGES AS 
(
    -- pull information about stored SSIS packages 
    SELECT 
     P.name AS PackageName 
    , P.id AS PackageId 
    , P.description as PackageDescription 
    , P.folderid 
    , P.packageFormat 
    , P.packageType 
    , P.vermajor 
    , P.verminor 
    , P.verbuild 
    , suser_sname(P.ownersid) AS ownername 
    FROM 
     msdb.dbo.sysssispackages P 
) 
SELECT 
    F.FolderPath 
, P.PackageName 
, F.FolderPath + '\' + P.PackageName AS PackagePath 
, P.packageFormat 
, P.packageType 
, P.vermajor 
, P.verminor 
, P.verbuild 
, P.ownername 
, P.PackageId 
FROM 
    FOLDERS F 
    INNER JOIN 
     PACKAGES P 
     ON P.folderid = F.folderid; 

Результаты (для окна по умолчанию 2008).

FolderPath PackageName PackagePath 
\Data Collector PerfCountersCollect \Data Collector\PerfCountersCollect 
\Data Collector PerfCountersUpload \Data Collector\PerfCountersUpload 
\Data Collector QueryActivityCollect \Data Collector\QueryActivityCollect 
\Data Collector QueryActivityUpload \Data Collector\QueryActivityUpload 
\Data Collector SqlTraceCollect \Data Collector\SqlTraceCollect 
\Data Collector SqlTraceUpload \Data Collector\SqlTraceUpload 
\Data Collector TSQLQueryCollect \Data Collector\TSQLQueryCollect 
\Data Collector TSQLQueryUpload \Data Collector\TSQLQueryUpload 
0

Используйте приведенное ниже общее табличное выражение folders_cte. Затем присоедините folders_cte к таблице msdb.dbo.sysssispackages на столбце folderid. Оттуда добавление дополнительных столбцов в предложение SELECT в самом низу относительно просто, но для простоты я включил только три.

;WITH folders_cte AS 
(
    SELECT 
     p.folderid, 
     p.parentfolderid, 
     p.foldername, 
     CAST(p.foldername AS VARCHAR(8000)) [path] 
    FROM msdb.dbo.sysssispackagefolders p 
    WHERE folderid = '00000000-0000-0000-0000-000000000000' 
    UNION ALL 
    SELECT 
     c.folderid, 
     c.parentfolderid, 
     c.foldername, 
     CAST(folders_cte.path+c.[foldername] + '\' AS VARCHAR(8000)) [path] 
    FROM msdb.dbo.sysssispackagefolders c 
    INNER JOIN folders_cte on 
    c.parentfolderid = folders_cte.folderid 
) 
SELECT f.path Path, p.name PackageName, f.path + p.name AS FullPath 
FROM msdb.dbo.sysssispackages p 
INNER JOIN folders_cte f ON 
p.folderid = f.folderid 
Смежные вопросы