다음을 통해 공유


콘텐츠 배포를 위한 고급 문제 해결 팁

이 문서에서는 콘텐츠 배포 문제를 식별하고 해결하는 데 도움이 되는 몇 가지 고급 문제 해결 팁을 제공합니다.

원래 제품 버전: Configuration Manager 현재 분기, Microsoft System Center 2012 Configuration Manager, Microsoft System Center 2012 R2 Configuration Manager

자세한 정보 로깅 사용

  • PkgXferMgr.log

    패키지 전송 관리자의 경우 자세한 로깅은 콘텐츠 복사 프로세스, 파일 해시 및 작업 일정에 대한 자세한 정보를 로그에 제공합니다. 다음 레지스트리 값을 0으로 설정하여 자세한 정보 로깅을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\LoggingLevel

    패키지 전송 관리자의 경우 디버그 로깅은 콘텐츠 복사 프로세스에 대한 자세한 정보를 제공합니다. 다음 레지스트리 값을 1로 설정하여 디버그 로깅을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SMS_PACKAGE_TRANSFER_MANAGER\DebugLogging

    참고

    이러한 레지스트리 변경은 서비스를 다시 시작할 SMS_Executive 필요가 없습니다.

  • 클라이언트 로그(끌어오기 DP 및 관리 지점 로그 포함)

    다음 레지스트리 값을 0으로 설정하여 자세한 정보 로깅을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogLevel

    다음 레지스트리 값을 true 값으로 REG_SZ 설정하여 디버그 로깅을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\DebugLogging\Enabled

    다음 레지스트리 값을 5242880 (10진수)로 설정하여 CCM 로그 크기를 5M으로 늘릴 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxSize

    또한 다음 레지스트리 값에 대한 DWORD 값을 편집하여 보존할 기록 로그 파일 수를 늘릴 수 있습니다.

    HKEY_LOCAL_MACHINE\Software\Microsoft\CCM\Logging\@GLOBAL\LogMaxHistory

    참고

    이러한 레지스트리 변경에는 서비스를 다시 시작해야 SMS Agent Host 합니다.

  • StateSys.log

    다음 레지스트리 값을 1로 설정하여 StateSys.log 대한 자세한 로깅을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\COMPONENTS\SMS_STATE_SYSTEM\Verbose logging

    참고

    이 레지스트리 키 변경은 서비스를 다시 시작할 SMS_Executive 필요가 없습니다.

  • (전역 - 사이트 서버만 해당) SQL 쿼리

    구성 요소에서 ConfigMgr 실행하는 SQL 쿼리에 대한 정보를 얻으려면 다음 레지스트리 값을 1로 설정하여 SQL 추적을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\SqlEnabled

    이 레지스트리 값은 모든 사이트 서버 로그에 대한 SQL 추적 로깅을 추가합니다. 이 작업은 문제를 해결하는 동안에만 일시적으로 수행해야 하며 관련 로그를 가져온 후에는 사용하지 않도록 설정해야 합니다.

    참고

    이 레지스트리를 변경해도 서비스를 다시 시작할 SMS_Executive 필요가 없습니다.

  • (전역 - 사이트 서버만 해당) 로그 보관 사용

    문제가 요청 시 재현되지 않고 문제가 재현되기를 기다리는 동안 로그가 롤오버될 위험이 있습니다. 이러한 상황에서 로그 보관을 사용하도록 설정하면 더 많은 기록 로그를 가질 수 있으므로 유용할 수 있습니다. 이는 사이트 서버 로그와만 관련이 있습니다.

    다음 레지스트리 값을 설정하여 로그 보관을 사용하도록 설정할 수 있습니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchiveEnabled = 1

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\ArchivePath = <ArchiveLocation>

    로그 보관을 사용하도록 설정한 후 ConfigMgr 롤오버된 로그를 ArchiveLocation>에 <보관하고 각 로그의 복사본을 10개 유지합니다.

    로그 보관을 사용할 때 특정 구성 요소에 대해 유지 관리되는 복사본 수를 늘리려면 다음 레지스트리 값을 20으로 설정합니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\LogMaxHistory

    참고

    이러한 레지스트리 변경에는 서비스를 다시 시작해야 SMS_Executive 합니다.

  • (로그당 - 사이트 서버만 해당) 로그 파일 크기 늘리기

    개별 로그의 로그 파일 크기를 50MB로 늘리려면 구성 요소별 레지스트리 값을 52428800 (10진수)로 설정합니다.

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SMS\Tracing\COMPONENT_NAME\MaxFileSize

    참고

    이 레지스트리를 변경하려면 서비스를 다시 시작해야 SMS_Executive 합니다.

압축된 패키지 복사본을 사이트에 다시 보내기

패키지가 사이트에 처음 배포되면 DistMgr은 패키지의 압축된 복사본을 사이트로 보냅니다. 사이트의 콘텐츠 라이브러리에서 패키지를 추출한 후 동일한 패키지 버전이 사이트의 DP에 배포되는 한 콘텐츠의 로컬 복사본을 사용하여 DP에 패키지를 보냅니다.

사이트에서 패키지의 압축된 복사본을 지정된 사이트에 다시 보내도록 강제해야 하는 경우가 몇 가지 있습니다. 특히 다음과 같은 경우에 필요합니다.

  1. 기본 또는 보조 사이트 서버 자체의 콘텐츠 라이브러리(PkgLib, DataLib또는 FileLib)에서 콘텐츠가 누락되었습니다.
  2. DistMgr.log 부모 사이트에서 도착하지 않은 콘텐츠에 대해 일관되게 불평합니다(예: '패키지 CS100026 아직 사이트 CS1에서 도착하지 않았으므로 나중에 다시 시도합니다.).

대부분의 경우 패키지 콘텐츠가 전송되는 동안 '패키지 CS100026 대한 콘텐츠가 아직 사이트 CS1에서 도착하지 않았고 나중에 다시 시도합니다.' 메시지가 일시적으로 기록됩니다. 이 메시지가 표시되면 발신자/데스풀러 로그를 검토하여 사이트 통신에 문제가 없는지 확인합니다. 로그 흐름을 이해 하려면 사이트 간에 DP에 패키지 배포 를 검토합니다.

DistMgr은 현재 사이트에 패키지 복사본이 설치되어 있는지 어떻게 알 수 있나요?

DistMgr은 해당 패키지 버전의 패키지에 PkgStatus 대한 형식 1 행이 있는지 확인합니다. 상태가 = 설치되어 있는 사이트에 대한 유형 1 행이 있는 경우 패키지 콘텐츠의 로컬 복사본을 사용하여 DP로 보냅니다. 에 PkgStatusType 1 행이 없으면 패키지 콘텐츠가 사이트 서버에 아직 설치되지 않았다는 의미입니다.

사이트 서버에 공동 배치된 DP에 패키지를 재배포하면 패키지의 압축된 복사본이 다시 분개합니다.

아니요. 패키지를 재배포하는 것은 패키지 원본 디렉터리에 패키지 콘텐츠가 이미 있는 사이트에 의존합니다. 패키지가 어느 시점에 사이트로 전송 되어 설치됨으로 표시되면 DistMgr에서 콘텐츠가 이미 설치되어 있고 다음 줄이 DistMgr.log 기록될 것으로 생각되므로 사이트 서버에 공동 배치된 DP의 재배포 작업은 아무 작업도 수행하지 않습니다.

배포 지점은 siteserver에 있고 패키지는 콘텐츠 형식 패키지입니다. 복사할 항목이 없습니다.

패키지 원본 사이트의 콘텐츠 라이브러리에 콘텐츠가 없으면 어떻게 해야 하세요.

콘텐츠가 패키지 원본 사이트의 콘텐츠 라이브러리에 없는 경우 를 다시 설정 SourceVersion 해도 도움이 되지 않습니다. 누락된 콘텐츠를 다시 채울 수 있는 유일한 방법은 패키지를 업데이트하는 것입니다. 패키지를 업데이트하면 패키지 원본 사이트에서 패키지 원본 위치에서 패키지 스냅샷 가져와 콘텐츠 라이브러리에 콘텐츠를 씁니다.

어떻게 할까요? 패키지 원본 사이트에서 패키지의 압축된 복사본을 특정 사이트로 다시 보내도록 강제합니다.

패키지 원본 사이트에 필요한 콘텐츠가 있는지 확인한 후 영향을 받는 사이트의 유형 1 행 PkgStatus 에 대해 를 0으로 설정 SourceVersion 하여 패키지 원본 사이트에서 패키지 PCK 파일을 특정 사이트에 다시 보내도록 할 수 있습니다. 이 행은 원하는 패키지 및 사이트의 PACKAGEIDSITECODE 를 바꾼 후 패키지 원본 사이트의 데이터베이스에서 다음 SQL 쿼리를 실행하여 식별할 수 있습니다.

SELECT * FROM PkgStatus WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'

이 쿼리가 고유하고 올바른 행을 반환했는지 확인한 후 아래 쿼리를 실행하면 이 행이 0으로 다시 설정 SourceVersion 됩니다.

UPDATE PkgStatus SET SourceVersion = 0 WHERE Type = 1 AND ID = 'PACKAGEID' AND SiteCode = 'SITECODE'

형식 1 행에 SourceVersion 대해 를 0 으로 다시 설정하면 영향을 받는 사이트의 DP에 패키지를 다시 배포하면 패키지 원본 사이트에서 패키지의 압축된 복사본을 영향을 받는 사이트에 다시 보내도록 강제합니다.

참고

패키지를 소유하는 사이트(예: 패키지 원본 사이트)에서 위의 쿼리를 실행하는 것이 매우 중요합니다.

콘텐츠 배포 관련 테이블

  • SMSPackages - 모든 패키지 목록을 포함합니다.

    흥미로운 열:

    작업 0 - NONE
    1 - 업데이트
    2 - 추가
    3 - DELETE
    4 - 유효성 검사
    5 - 취소
    PackageType 0 - 일반 패키지
    3 - 드라이버 패키지
    4 - 작업 순서
    5 - 소프트웨어 업데이트 패키지
    6 - 디바이스 설정 패키지
    7 - 가상 앱 패키지
    8 - 콘텐츠 패키지(애플리케이션)
    257 - 운영 체제 이미지
    258 - 부팅 이미지
    259 - OS 설치 패키지
    260 - VHD 패키지
  • PkgServers - 현재 대상으로 지정된 DP와 함께 모든 패키지 목록을 포함합니다.

    흥미로운 열:

    작업 0 - NONE
    1 - 업데이트
    2 - 추가
    3 - DELETE
    4 - 유효성 검사
    5 - 취소
  • PkgStatus- 각 DP에 대한 각 패키지에 대한 현재 패키지 상태 목록을 포함합니다.

    흥미로운 열:

    유형 1 - SITE(MASTER)
    2 - DP(COPY)

    패키지가 대상으로 하는 각 사이트에 대해 1개의 행이 만들어집니다. 이 행의 PkgServer는 사이트 서버 FQDN입니다.

    패키지가 대상으로 하는 각 DP에 대해 형식 2 행이 만들어집니다. PkgServer는 DP NALPATH입니다.
    상태 0 - NONE
    1 - SENT
    2 - 수신됨
    3 - 설치됨
    4 - 다시 시도
    5 - 실패
    6 - 제거됨
    7 - 보류 중인 REMOVE(사용되지 않음)
    8 - 제거 실패
    9 - 다시 시도 제거
  • DistributionJobs - 패키지 전송 관리자 작업의 목록을 현재 상태와 함께 포함합니다.

    흥미로운 열:

    작업 0 - NONE
    1 - 업데이트
    2 - 추가
    3 - DELETE
    4 - 유효성 검사
    5 - 취소
    상태 0 - 보류 중
    1 - 준비 완료
    2 - 시작됨
    3 - INPROGRESS
    4 - 다시 시작 보류 중
    5 - 완료
    6 - 실패
    7 - 취소됨
    8 - 일시 중단됨
  • DistributionPoints - 모든 배포 지점의 목록을 포함합니다.

    흥미로운 열:

    작업 0 - NONE
    1 - 업데이트
    2 - 추가
    3 - DELETE
    4 - 유효성 검사
    5 - 취소
  • PullDPResponse- 끌어오기 DP에서 보낸 패키지 상태 응답을 일시적으로 포함합니다. DistMgr은 응답을 처리하고 를 업데이트합니다.PkgStatus

    흥미로운 열:

    ActionState 1 - 성공
    2 - 경고
    4 - 오류
    8 - 다운로드 시작됨
    16 - 다운로드 진행 중
    32 - 다운로드됨
    64 - 취소됨
    128 - 취소 요청됨
  • PkgNotification - 패키지를 처리하기 위해 DistMgr을 트리거하기 위해 SMSDBMON에서 모니터링하는 알림 테이블입니다. 형식 열은 패키지 알림의 형식을 정의합니다. 이 테이블의 행은 SMSDBMON이 DistMgr을 트리거한 후에 제거됩니다.

    흥미로운 열:

    유형 0 - 알 수 없음
    1 - 패키지
    2 - PROGRAM
    4 - 패키지 서버(DP)
    8 - 패키지 액세스 계정
    15 - 모두
  • 끌어오기 DP 상태 메시지 - 끌어오기 DP에서 발생한 상태 메시지 ID 목록

    흥미로운 열:

    상태 ID 1 - 성공
    2 - 경고
    4 - 실패
    8 - 다운로드 시작됨
    16 - 다운로드 진행 중
    32 - 다운로드됨
    64 - 취소됨

    샘플 상태 메시지 보고서:

        <Report>
         <ReportHeader>
            <Identification>
               <Machine>
                  <ClientInstalled>0</ClientInstalled>
                  <ClientType>1</ClientType>
                  <Unknown>0</Unknown>
                  <ClientID IDType="0" IDFlag="1">925b0ab0-247b-466b-be0f-93d7cb032c87</ClientID>
                  <ClientVersion>5.00.0000.0000</ClientVersion>
                  <NetBIOSName>P01PDP1.CONTOSO.COM</NetBIOSName>
                  <CodePage>437</CodePage>
                  <SystemDefaultLCID>1033</SystemDefaultLCID>
               </Machine>
            </Identification>
            <ReportDetails>
               <ReportContent>StateMessage</ReportContent>
               <ReportType>Full</ReportType>
               <Date>20190107200618.000000+000</Date>
               <Version>1.0</Version>
               <Format>1.1</Format>
            </ReportDetails>
         </ReportHeader>
         <ReportBody>
            <StateMessage MessageTime="20190107200618.000000+000" SerialNumber="3">
               <Topic ID="P010000F" Type="902" IDType="0"/>
               <State ID="1" Criticality="0"/>
               <UserParameters Flags="0" Count="4">
                  <Param>P010000F</Param>
                  <Param>["Display=\\P01PDP1.CONTOSO.COM\"]MSWNET:["SMS_SITE=P01"]\\P01PDP1.CONTOSO.COM\</Param>
                  <Param>{04AD1BB3-5E54-457A-9873-DFB2E8035090}</Param>
                  <Param/>
               </UserParameters>
            </StateMessage>
         </ReportBody>
      </Report>
    

유용한 SQL 쿼리

다양한 콘텐츠 배포 관련 문제를 해결할 때 유용할 수 있는 몇 가지 SQL 쿼리는 다음과 같습니다.

패키지/DP 상태 쿼리

  • 모든 실패한 패키지/DP

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE MessageState = 4
    
  • 모든 진행 중인 패키지/DP

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE MessageState = 2
    
  • 모든 성공 패키지/DP

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE MessageState = 1
    
  • 3일 이상 진행 중인 상태의 모든 패키지/DP

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())  
    AND MessageState = 2
    
  • 3일 이상 실패한 상태의 모든 패키지/DP

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.MessageState, DPSD.LastStatusTime, DPSD.SiteCode
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE DPSD.LastStatusTime < DATEAdd(dd,-3,GETDate())
    AND MessageState = 4
    
  • 모든 상태 수

    SELECT MessageState,
    COUNT(MessageState) AS [Count]
    FROM vSMS_DPStatusDetails
    WHERE PackageID <> ''
    GROUP BY MessageState
    
  • DP당 패키지 상태 수

    SELECT DPName,
    CASE
        WHEN MessageState = 1 THEN 'Success'
        WHEN MessageState = 2 THEN 'InProgress'
        WHEN MessageState = 4 THEN 'Failed'
    END AS [State],  
    COUNT(MessageState) AS [Count]
    FROM vSMS_DPStatusDetails
    WHERE PackageID <> ''
    AND DPName = 'PS1DP1.CONTOSO.COM'
    GROUP BY DPName, MessageState
    ORDER BY DPName
    
  • 지정된 패키지에 대한 모든 DP의 상태

    SELECT DPName,
    CASE
        WHEN MessageState = 1 THEN 'Success'
        WHEN MessageState = 2 THEN 'InProgress'
        WHEN MessageState = 4 THEN 'Failed'
    END AS [State]
    FROM vSMS_DPStatusDetails
    WHERE PackageID = '<PackageID>'
    GROUP BY DPName, MessageState
    ORDER BY State
    
  • 패키지당 DP 상태 수

    SELECT  
    CASE
        WHEN MessageState = 1 THEN 'Success'
        WHEN MessageState = 2 THEN 'InProgress'
        WHEN MessageState = 4 THEN 'Failed'
    END AS [State],
    COUNT(MessageState) AS [Count]
    FROM vSMS_DPStatusDetails
    WHERE PackageID = '<PackageID>'
    GROUP BY MessageState
    
  • 패키지/DP 현재 상태

    SELECT distinct DPSD.DPName, DPSD.PackageID, SP.Name, DPSD.LastStatusTime, DPSD.SiteCode, DPSD.MessageState,
    CASE
        WHEN MessageState = 1 THEN 'Success'
        WHEN MessageState = 2 THEN 'InProgress'
        WHEN MessageState = 4 THEN 'Failed'
    END AS [State]
    FROM vSMS_DPStatusDetails DPSD
    JOIN SMSPackages_All SP ON DPSD.PackageID = SP.PkgID
    WHERE DPName = 'PS1DP1.CONTOSO.COM'
    AND DPSD.PackageID = '<PackageID>'
    

분리된 DP 참조 찾기

아래 쿼리를 사용하여 더 이상 환경에 없는 DP에 대한 분리된 행이 데이터베이스에 남아 있는지 확인할 수 있습니다. DP가 제대로 제거되지 않은 경우 분리된 행이 있을 수 있습니다.

DECLARE @DPName NVARCHAR(100)
SET @DPName = 'PS1DP.CONTOSO.COM'
SELECT * FROM ContentDPMap WHERE ServerName = @DPName
SELECT * FROM DistributionPoints WHERE ServerName = @DPName
SELECT * FROM DPInfo WHERE ServerName = @DPName
SELECT * FROM PkgServers_G WHERE NALPath like '%' + @DPName + '%'
SELECT * FROM PkgServers_L WHERE NALPath like '%' + @DPName + '%'
SELECT * FROM PkgStatus_G WHERE PkgServer like '%' + @DPName + '%'
SELECT * FROM PkgStatus_L WHERE PkgServer like '%' + @DPName + '%'
SELECT * FROM SysResList WHERE RoleName = 'SMS Distribution Point' AND ServerName = @DPName
SELECT * FROM SC_SysResUse WHERE NALPath like '%' + @DPName + '%' AND RoleTypeID = 3

특정 사이트의 특정 DP에 대한 유사한 쿼리:

DECLARE @DPName NVARCHAR(100)
DECLARE @DPSiteCode NVARCHAR(3)
SET @DPName = 'DPNAME.CONTOSO.COM'
SET @DPSiteCode = 'PS1'

SELECT * FROM ContentDPMap WHERE ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM DistributionPoints WHERE ServerName = @DPName AND SMSSiteCode = @DPSiteCode
SELECT * FROM DPInfo WHERE ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM PkgServers_L WHERE NALPath like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgServers_G WHERE NALPath like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgStatus_L WHERE PkgServer like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM PkgStatus_G WHERE PkgServer like '%' + @DPName + '%' AND SiteCode = @DPSiteCode
SELECT * FROM SysResList WHERE RoleName = 'SMS Distribution Point' AND ServerName = @DPName AND SiteCode = @DPSiteCode
SELECT * FROM SC_SysResUse WHERE NALPath like '%' + @DPName + '%SMS_SITE=' + @DPSiteCode +  '%' AND RoleTypeID = 3

SCF(사이트 제어 파일) 속성

  • 현재 사이트의 DistMgr에 대한 SCF 속성

    SELECT SD.SiteCode, SC.ComponentName, SCP.Name, SCP.Value1, SCP.Value2, SCP.Value3
    FROM SC_Component SC
    JOIN SC_SiteDefinition SD ON SD.SiteNumber = SC.SiteNumber
    JOIN SC_Component_Property SCP ON SCP.ComponentID = SC.ID
    WHERE SD.SiteCode = dbo.fnGetSiteCode() AND SC.ComponentName = 'SMS_DISTRIBUTION_MANAGER'
    
  • DP에 대한 SCF 속성

    SELECT SRU.RoleName, SRU.ServerName, SRUP.* FROM vSMS_SC_SysResUse SRU
    JOIN vSMS_SC_SysResUse_Properties SRUP ON SRU.ID = SRUP.ID
    WHERE SRU.RoleName = 'SMS Distribution Point'
    AND SRU.ServerName = 'PS1DP1.CONTOSO.COM'
    

지정된 소프트웨어 업데이트를 포함하는 패키지

지정된 업데이트 고유 ID를 포함하는 모든 패키지를 나열합니다.

SELECT distinct UI.ArticleID, CI.CI_UniqueID, CP.PkgID, P.Name FROM v_UpdateInfo UI
JOIN v_ConfigurationItems CI ON UI.CI_ID = CI.CI_ID
JOIN v_CIContents_All CIC ON CI.CI_ID = CIC.CI_ID
JOIN CI_ContentPackages CP ON CP.Content_ID = CIC.Content_ID
JOIN v_Package P ON CP.PkgID = P.PackageID
WHERE CI.CI_UniqueID = '<UniqueID>'