Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Tsql SSIS物理路径_Tsql_Ssis - Fatal编程技术网

Tsql SSIS物理路径

Tsql SSIS物理路径,tsql,ssis,Tsql,Ssis,我在查找SSIS包的物理路径时遇到问题,因为我移交了某人的作业,并且SSIS中的包名与光盘中的包名不同。有很多SSIE,很难找到正确的SSIE。我找到了显示所有包的解决方案,但是没有关于物理路径的信息。请停下来 with ChildFolders as ( select PARENT.parentfolderid, PARENT.folderid, PARENT.foldername, cast('' as sysname) as RootFolder,

我在查找SSIS包的物理路径时遇到问题,因为我移交了某人的作业,并且SSIS中的包名与光盘中的包名不同。有很多SSIE,很难找到正确的SSIE。我找到了显示所有包的解决方案,但是没有关于物理路径的信息。请停下来

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;
我的和你的相似。你的路径和我的路径的不同之处在于,我的路径使用反斜杠,而你的路径使用正斜杠

;
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框)


我找到了解决办法。我刚刚在Visual Studio中创建了一个新的SSIS项目,可以选择添加现有的SSIS包:

然后我刚刚登录到存储包的服务器:


并导航到我正在查找的包。

使用下面的
文件夹
通用表表达式。然后将文件夹加入到
folderid
列上的
msdb.dbo.sysssipackages
表中。从这里开始,在最底部的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
;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