Configuration Manager에서 Service Manager로 데이터 가져오기

중요

이 버전의 Service Manager 지원이 종료되었습니다. Service Manager 2022로 업그레이드하는 것이 좋습니다.

이 문서에서는 Configuration Manager Connector를 만들고, 구성하고, 사용하도록 설정 및 해제하는 방법을 설명하며 하드웨어 정보를 수집하도록 Configuration Manager의 SMS_def.mof 확장 파일을 사용자 지정하는 방법을 설명합니다. 커넥터를 사용하여 Configuration Manager에서 Service Manager로 데이터를 가져옵니다.

Configuration Manager용 커넥터는 사용자 디바이스 선호도 및 모바일 디바이스를 인식하고 이를 Service Manager 데이터베이스에서 동기화합니다.

Configuration Manager 사이트 데이터베이스에서 Service Manager 데이터베이스로 데이터를 가져올 수 있습니다. 그러면 Service Manager에서 관리하려는 하드웨어 및 소프트웨어에 대한 구성 항목이 자동으로 만들어지고 채워집니다. Configuration Manager에서 데이터를 가져온 후 각 구성 항목을 관련 인시던트에 연결할 수 있으며 해당 인시던트에 대해 작업하는 분석가에게 구성 항목 정보가 표시됩니다.

Configuration Manager 커넥터를 사용하여 Configuration Manager에서 구성 기준을 가져온 후 이러한 구성 기준을 사용하여 호환되지 않는 구성 항목에 대한 인시던트를 자동으로 생성할 수 있습니다.

변경 및 구성의 MOF(Microsoft Operations Framework) 구현에 대한 자세한 내용은 MOF IT 서비스 수명 주기 내에서 변경 및 구성 SMF의 위치를 참조하세요.

데이터 웨어하우스 등록 프로세스 완료

Configuration Manager 커넥터를 만들기 전에 Data Warehouse 등록 프로세스가 완료되었는지 확인해야 합니다.

Configuration Manager의 추가 데이터

Configuration Manager의 추가 데이터에는 UDA(사용자 디바이스 선호도), 모바일 디바이스 데이터 및 소프트웨어 요청 데이터가 포함됩니다. Configuration Manager의 UDA 데이터는 컴퓨터 또는 디바이스의 기본 사용자를 보다 정확하게 결정합니다. Service Manager Configuration Manager 커넥터에서 수집한 UDA 데이터는 Service Manager 데이터베이스의 UsesComputer 및 PrimaryUser 정보를 채우는 데 사용됩니다.

Windows Phone, Windows Mobile Phone 및 Nokia 디바이스의 모바일 디바이스 데이터는 Service Manager Configuration Manager 커넥터에서 수집됩니다. iPhone, BlackBerry 및 Android 기반 휴대폰과 같은 다른 모바일 디바이스의 데이터는 Configuration Manager Exchange Server 커넥터를 사용할 때 수집됩니다. 모바일 디바이스 데이터는 구성 항목으로 Service Manager 데이터베이스로 가져오고 작업 항목, 인시던트 관리 및 변경 관리와 연결할 수 있습니다.

소프트웨어 요청 데이터는 Configuration Manager와의 셀프 서비스 소프트웨어 요청 통합을 지원하는 데 사용됩니다. Configuration Manager의 관리 범주 데이터는 셀프 서비스 포털에서 요청을 만들 때 적용할 서비스 요청 템플릿을 선택하는 데 사용됩니다.

예약

되풀이 일정에 따라 Service Manager 데이터베이스를 업데이트하도록 Configuration Manager 커넥터를 구성할 수 있습니다. 또한 커넥터를 사용하지 않도록 설정하여 Configuration Manager에서 데이터 가져오기를 일시적으로 중단할 수도 있습니다. 예를 들어, 유지 관리 프로세스로 인해 일시적으로 부정확한 데이터가 만들어질 수 있으므로 Configuration Manager 사이트 데이터베이스에 대한 유지 관리를 수행할 경우에는 커넥터를 사용하지 않도록 설정할 수 있습니다. 필요한 경우 커넥터를 다시 사용하도록 설정하고 데이터 가져오기를 다시 시작할 수 있습니다.

Configuration Manager를 사용하여 하드웨어 인벤토리 확장

Configuration Manager에서는 조직의 요구 사항에 맞춰 추가 WMI(Windows Management Instrumentation) 클래스, 추가 WMI 클래스 특성, 레지스트리 키 및 기타 사용자 지정 인벤토리를 수집하여 하드웨어 인벤토리를 확장할 수 있습니다. Configuration Manager 하드웨어 인벤토리를 확장하는 방법에 대한 자세한 내용은 하드웨어 인벤토리를 확장하는 방법을 참조하세요.

Configuration Manager 하드웨어 인벤토리를 확장한 경우 확장된 하드웨어 인벤토리를 수집하려면 Service Manager 새 Configuration Manager 커넥터 관리 팩을 만들어야 합니다. 이러한 새 관리 팩에는 Configuration Manager에서 확장된 하드웨어 인벤토리를 수집하는 데 필요한 정보만 포함되거나, 원래 Configuration Manager 커넥터 관리 팩과 확장된 새 하드웨어 인벤토리의 모든 정보가 포함될 수 있습니다. 새 커넥터 관리 팩을 만드는 방법에 대한 자세한 내용은 확장 SMS_def.mof 파일에 대한 Configuration Manager 커넥터를 구성하는 방법을 참조하세요.

소프트웨어 구성 항목 가져오기

Configuration Manager 다음 자산 인텔리전스 보고 클래스를 가져와 Configuration Manager 커넥터를 사용하여 소프트웨어 구성 항목을 가져올 수 있습니다. Service Manager에서 Configuration Manager 커넥터를 구성하기 전에 Configuration Manager에서 이러한 클래스를 사용하도록 설정해야 합니다. Configuration Manager Asset Intelligence를 사용하도록 설정하는 방법에 대한 자세한 내용은 Asset Intelligence를 사용하도록 설정하는 방법을 참조하세요.

  • SMS_InstalledSoftware

  • SMS_SystemConsoleUsage

  • SMS_SystemConsoleUser

  • SoftwareLicensingService

  • SoftwareLicensingProduct

특정 컴퓨터의 소프트웨어가 구성 항목 작업 영역의 모든 소프트웨어 보기에 표시되지 않는 경우 Service Manager 주 관리 서버에서 Operations Manager 이벤트 로그를 검토해야 합니다. OpsMgr 커넥터 및 Lfx 서비스의 원본에서 이벤트를 검색하여 오류가 있는지 확인해야 합니다.

Configuration Manager 커넥터 만들기

다음 절차에 따라 커넥터를 만들어 Configuration Manager System Center로 데이터를 가져오고 Service Manager 커넥터의 상태 확인할 수 있습니다.

중요

Configuration Manager 커넥터를 만들기 전에 환경에 Configuration Manager 설치되어 있는지 확인하고 UAC(Windows 사용자 계정 컨트롤)를 켜야 합니다. UAC에 대한 자세한 내용은 사용자 계정 컨트롤을 참조하세요.

Configuration Manager 커넥터를 만들려면

  1. Service Manager 콘솔에서 관리를 선택합니다.
  2. 관리 창에서 관리를 확장하고 커넥터를 선택합니다.
  3. 작업 창의 커넥터에서 커넥터 만들기를 선택하고 커넥터를 Configuration Manager 선택합니다. Configuration Manager 커넥터 마법사가 시작됩니다.
  4. 시작하기 전에 페이지에서 다음을 선택합니다.
  5. 일반 페이지에서 다음을 수행합니다.
    1. 이름 상자에 새 커넥터의 이름을 입력합니다. 예를 들어 Configuration Manager Connector to Seattle을 입력합니다.
    2. 설명 상자에 새 커넥터에 대한 설명을 입력합니다. 예를 들어 사이트 시애틀에 대한 Configuration Manager 커넥터를 입력합니다.
    3. 사용 확인란 선택되어 있는지 확인하고 다음을 선택합니다.
  1. 관리 팩 선택 페이지의 관리 팩 목록에서 System Center Configuration Manager 커넥터 구성 또는 System Center Configuration Manager 2012 커넥터 구성을 선택하고 다음을 선택합니다.
  1. 관리 팩 선택 페이지의 관리 팩 목록에서 System Center Configuration Manager 커넥터 구성을 선택하고 다음을 선택합니다.
  1. System Center Configuration Manager 데이터베이스에 연결 페이지에서 다음을 수행합니다.

    1. 데이터베이스 서버 이름 상자에 Configuration Manager 사이트 데이터베이스를 호스팅하는 서버의 서버 이름과 해당하는 경우 instance 데이터베이스를 입력합니다. 예를 들어 가상의 Woodgrove Bank에서 Configuration Manager 데이터베이스가 Microsoft SQL Server 명명된 instance 있는 경우 woodgrove\instance1을 입력하거나 데이터베이스가 SQL Server 기본 instance 있는 경우 woodgrove를 입력할 수 있습니다.
    2. 데이터베이스 이름 상자에 Configuration Manager 사이트 데이터베이스의 이름을 입력합니다. 예를 들어 SMS_CM1 입력합니다.
    3. 자격 증명 영역에서 실행 계정을 선택하거나 새 실행 계정을 만듭니다. 실행 계정으로 지정하는 사용자 계정은 Configuration Manager 사이트 데이터베이스의 smsdbrole_extract 및 db_datareader 그룹 구성원이어야 합니다.
    4. 자격 증명 영역에서 연결 테스트를 선택합니다.
    5. 자격 증명 대화 상자의 암호 상자에 계정의 암호를 입력하고 확인을 선택합니다.
    6. 연결 테스트 대화 상자에서 다음 확인 메시지가 표시되면 확인을 선택합니다. 서버에 대한 연결이 성공했습니다.
    7. 다음을 선택합니다.
  2. 컬렉션 페이지에서 적절한 컬렉션을 선택한 다음, 다음을 선택합니다.

  3. 일정 페이지의 동기화 목록에서 동기화 빈도 및 시간을 설정하고 다음을 선택합니다.

  4. 요약 페이지에서 만든 커넥터 설정을 확인하고 만들기를 선택합니다.

  5. 확인 페이지에서 System Center Configuration Manager 커넥터 마법사를 성공적으로 완료했다는 확인 메시지가 표시되는지 확인합니다. 그런 다음, 닫기를 선택합니다.

    참고

    System Center Configuration Manager 커넥터 마법사는 Configuration Manager 데이터를 가져오는 데 몇 시간이 걸릴 수 있습니다.

Configuration Manager 커넥터가 생성되었는지 확인하려면

  1. 앞서 만든 Configuration Manager 커넥터가 커넥터 창에 표시되는지 확인하십시오.
  2. Service Manager 콘솔에서 구성 항목을 선택합니다. 구성 항목 창에서 구성 항목을 확장하고 컴퓨터를 확장한 다음 모든 Windows 컴퓨터를 선택합니다. 의도한 컴퓨터가 모든 Windows 컴퓨터 창에 표시되는지 확인합니다.
  3. 중간 창에서 새로 가져온 컴퓨터를 두 번 클릭합니다. 적절한 컴퓨터 정보가 컴퓨터 양식에 표시되는지 확인합니다.

Configuration Manager 커넥터의 상태를 확인하려면

  • 커넥터 창에서 시작 시간, 완료 시간, 상태 및 완료 비율에 대한 정보가 포함된 열을 확인합니다.

PowerShell 기호Windows PowerShell 명령을 사용하여 새 Configuration Manager 커넥터를 만들 수 있습니다. Windows PowerShell 사용하여 Service Manager 새 Configuration Manager 커넥터를 만드는 방법에 대한 자세한 내용은 New-SCCMConnector를 참조하세요.

Configuration Manager 커넥터 사용 안 함 및 사용

다음 절차를 사용하여 Configuration Manager 커넥터를 사용하지 않도록 설정하거나 사용하도록 설정하고 변경 상태 유효성을 검사할 수 있습니다.

Configuration Manager Connector를 사용하지 않도록 설정하려면

  1. Service Manager 콘솔에서 관리를 선택합니다.

  2. 관리 창에서 관리를 확장하고 커넥터를 선택합니다.

  3. 커넥터 창에서 사용하지 않도록 설정할 Configuration Manager 커넥터를 선택합니다. 예를 들어 CONFIGURATION MANAGER 커넥터를 선택합니다.

  4. 작업 창의 커넥터 이름 아래에서 사용 안 함을 선택합니다.

    참고

    데이터를 동기화하는 동안 커넥터를 사용하지 않도록 설정하면 동기화 프로세스가 중지되지 않을 수 있습니다. 그러나 사용하지 않도록 설정된 커넥터는 해당 시점부터 Configuration Manager 데이터베이스에서 새 데이터를 가져오지 않습니다.

Configuration Manager Connector를 사용하도록 설정하려면

  1. Service Manager 콘솔에서 관리를 선택합니다.
  2. 관리 창에서 관리를 확장하고 커넥터를 선택합니다.
  3. 커넥터 창에서 사용하도록 설정할 Configuration Manager 커넥터를 선택합니다. 예를 들어 CONFIGURATION MANAGER 커넥터를 선택합니다.
  4. 작업 창의 커넥터 이름 아래에서 사용을 선택합니다.

Configuration Manager Connector의 상태 변경을 확인하려면

  1. 커넥터를 사용하지 않도록 설정하거나 사용하도록 설정한 후 30초 동안 기다립니다. 그런 다음, Service Manager 콘솔에서 관리를 선택하고 커넥터를 선택합니다.
  2. 커넥터 창에서 상태 변경한 커넥터를 찾고 사용 열에서 값을 확인합니다.
  3. 커넥터를 사용하도록 설정한 경우 커넥터에서 일정에 따라 동기화를 다시 시작하는지 확인합니다. 커넥터를 사용하지 않도록 설정한 경우 커넥터에서 더 이상 일정에 따라 동기화하지 않는지 확인합니다.

PowerShell 기호의 스크린샷다음과 같이 Windows PowerShell 명령을 사용하여 이러한 작업 및 기타 관련 작업을 완료할 수 있습니다.

  • Windows PowerShell을 사용하여 Service Manager Connector를 시작하는 방법은 Start-SCSMConnector를 참조하세요.
  • Windows PowerShell을 사용하여 Service Manager에 정의된 커넥터를 검색하고 해당 상태를 확인하는 방법에 대한 자세한 내용은 Get-SCSMConnector를 참조하세요.
  • Windows PowerShell 사용하여 Service Manager 커넥터의 속성을 업데이트하는 방법에 대한 자세한 내용은 Update-SCSMConnector를 참조하세요.

Configuration Manager 커넥터 동기화

Service Manager 데이터베이스가 최신 상태인지 확인하기 위해 System Center Configuration Manager 커넥터는 초기 동기화 후 매일 Configuration Manager 동기화합니다. 그러나 다음 프로시저를 사용하여 커넥터를 수동으로 동기화하고 커넥터가 동기화되었는지 유효성 검사할 수 있습니다.

Configuration Manager Connector를 수동으로 동기화하려면

  1. Service Manager 콘솔에서 관리를 선택합니다.

  2. 관리 창에서 관리를 확장하고 커넥터를 선택합니다.

  3. 커넥터 창에서 동기화할 Configuration Manager 커넥터를 선택합니다.

  4. 작업 창의 커넥터 이름 아래에서 지금 동기화를 선택합니다.

    참고

    가져오는 데이터의 양에 따라 가져오기가 완료될 때까지 어느 정도 기다려야 할 수 있습니다.

Configuration Manager Connector가 동기화되었는지 확인하려면

  1. Service Manager 콘솔에서 구성 항목을 선택합니다.
  2. 구성 항목 창에서 컴퓨터를 확장하고 모든 Windows 컴퓨터를 선택합니다. Configuration Manager의 새 컴퓨터가 중간 창에 나타나는지 확인합니다.

확장된 SMS_def.mof 파일에 대한 Configuration Manager 커넥터 구성

Service Manager 하드웨어 인벤토리는 사용 가능한 디스크 공간, 프로세서 유형 및 운영 체제와 같은 시스템 정보를 수집하여 Configuration Manager 계층 구조의 각 컴퓨터에 대해 제공합니다. Configuration Manager에서 사용자는 기본 Configuration Manager SMS_def.mof 파일을 사용자 지정하여 수집되는 하드웨어 인벤토리 정보를 확장할 수 있습니다.

Service Manager에서 Configuration Manager 커넥터를 만들 때 해당 커넥터에 사용해야 하는 기본 System Center Configuration Manager 커넥터 구성 관리 팩을 선택할 수 있습니다. 커넥터는 기본 관리 팩을 사용하여 시스템에 있는 컴퓨터에 대한 하드웨어, 소프트웨어 및 Desired Configuration Management 정보를 가져옵니다.

Configuration Manager SMS_def.mof 파일이 확장되어 Service Manager로 가져오려는 추가 하드웨어 인벤토리 데이터를 수집하는 경우 해당 추가 데이터를 정의하는 새 사용자 지정 관리 팩을 만들어야 합니다. 그런 다음 새 Configuration Manager 커넥터를 만들고 새 사용자 지정 관리 팩을 사용하도록 구성해야 합니다.

Configuration Manager 확장 하드웨어 인벤토리 데이터 가져오기

Configuration Manager 확장 하드웨어 인벤토리 데이터를 가져오려면 사용자 지정 Configuration Manager 커넥터 관리 팩을 작성해야 합니다. 사용자 지정 Configuration Manager 커넥터를 구현하는 방법은 두 가지가 있습니다.

  • 가져올 확장 데이터를 정의하는 사용자 지정 Configuration Manager 커넥터 관리 팩을 만든 다음 두 개의 커넥터를 만듭니다. 첫 번째 커넥터는 기본 System Center Configuration Manager 커넥터 구성 관리 팩을 사용하고 기본적으로 정의된 데이터를 가져오도록 구성합니다. 두 번째 커넥터는 사용자 지정 관리 팩을 사용하여 확장된 추가 데이터를 가져오도록 구성합니다.

  • 확장된 추가 데이터도 포함하도록 기본 System Center Configuration Manager 커넥터 구성 관리 팩을 사용자 지정합니다. 사용자 지정 관리 팩을 사용하여 필요한 모든 정보를 가져오도록 구성된 단일 커넥터를 만듭니다.

이 문서에서는 앞에서 설명한 첫 번째 방법을 구현해야 하는 정보를 제공합니다. Configuration Manager에서 확장 하드웨어 인벤토리를 가져오는 사용자 지정 Configuration Manager 커넥터 관리 팩을 개발할 수 있도록 필요한 세부 정보를 제공합니다.

확장된 하드웨어 인벤토리를 가져오는 방법에 대한 대략적인 단계는 다음과 같습니다.

  1. 확장된 데이터에 대한 정의가 있는 사용자 지정 Configuration Manager 커넥터 구성 관리 팩을 만듭니다.
  2. 사용자 지정 관리 팩을 Service Manager로 가져옵니다. 관리 팩을 가져온 후 Service Manager는 관리 팩의 지시문을 처리하여 관리 팩에 정의된 대로 준비 테이블을 만들고 설치 SQL(구조적 쿼리 언어) 스크립트를 실행합니다.
  3. Configuration Manager 커넥터를 만들고 사용자 지정 관리 팩을 사용하도록 커넥터를 구성합니다.
  4. Configuration Manager 커넥터를 통해 데이터를 가져옵니다.

사용자 지정 Configuration Manager 커넥터 관리 팩 사용

사용자 지정 Configurations Manager 커넥터 관리 팩으로 작업할 때 다음 팁을 고려합니다.

  • 관리 팩의 커넥터 구성 템플릿에 대한 의미 체계 오류는 관리 팩을 가져오는 것을 방지하지 않으며 이벤트 로그에 기록됩니다. 이 경우 관리 팩을 삭제하고 오류를 수정한 후 관리 팩을 다시 가져와야 합니다.

  • Configuration Manager 커넥터를 만든 후에는 관리 팩 선택을 수정할 수 없습니다. 대신, 커넥터를 삭제한 후 필요한 관리 팩 선택 항목으로 새 커넥터를 만들어야 합니다.

  • 관리 팩을 제대로 삭제하려면 삭제할 관리 팩을 사용하도록 구성된 커넥터를 모두 삭제한 후 관리 팩을 삭제해야 합니다.

    사용자 지정 Configurations Manager 커넥터 관리 팩을 삭제하면 Service Manager 관리 팩 가져오기 중에 만든 모든 관련 준비 테이블을 삭제하려고 시도합니다. 그런 다음 Service Manager 관리 팩의 제거 섹션에 정의된 모든 스크립트를 실행합니다.

  • 다른 관리 팩과 달리 사용자 지정 Configuration Manager 커넥터 관리 팩의 버전을 지정할 수 없습니다. 이후 버전의 관리 팩은 성공적으로 가져올 수 있습니다. 그러나 관리 팩의 커넥터 구성이 무시되거나 유효성 검사 오류가 발생하여 이벤트 로그에 오류가 기록될 수 있습니다.

사용자 지정 Configuration Manager 커넥터 구성 관리 팩 만들기

사용자 지정 Configuration Manager 커넥터 구성 관리 팩은 구조상 기본 Configuration Manager 커넥터 관리 팩과 비슷합니다. 관리 팩에는 데이터를 가져오고 적용하는 방법을 지정하는 DataProviderDataConsumer , 두 개의 개체 템플릿이 포함되어 있습니다.

DataProvider 섹션

DataProvider 섹션에서는 Configuration Manager 데이터를 LinkingFramework의 준비 테이블로 가져올 때 가져와야 하는 데이터와 같은 정보를 제공합니다. DataProvider 섹션에는 Configuration Manager 사이트 데이터베이스에서 실행되는 쿼리, 스테이징 테이블 만들기를 위한 지시문, 사용자 지정 SQL 스크립트 및 워터마크 및 일괄 처리와 같은 증분 동기화와 관련된 정보가 포함됩니다.

DataConsumer 섹션

DataConsumer 섹션에서는 스테이징 테이블에서 데이터를 읽고 이를 ServiceManager 데이터베이스의 인스턴스 공간(예: 엔터티 또는 관계)에 쓰는 방법에 대한 정보를 제공합니다. DataConsumer 섹션에는 스테이징 테이블에서 실행되는 쿼리가 포함됩니다. Service Manager 형식 시스템, 사용자 지정 SQL 스크립트 및 증분 동기화와 관련된 정보(예: 워터마크 및 일괄 처리)에 매핑합니다.

DataProvider 및 DataConsumer 개체 템플릿 섹션의 구조

기본적으로 DataProviderDataConsumer 는 프로젝션 유형을 대상으로 하는 개체 템플릿입니다. 다음 코드에서는 DataProviderDataConsumer 섹션의 일반 구조를 보여 줍니다.

<TypeProjection ID="System.LinkingFramework.DataConnector.Projection" Accessibility="Public" Type="System.LinkingFramework.DataConnector">
          <Component Alias="DataTable" Path="$Context/Path[Relationship='System.LinkingFramework.ConnectorEmbedsTables' TypeConstraint='System.LinkingFramework.DataTable']$">
            <Component Alias="Field" Path="$Context/Path[Relationship='System.LinkingFramework.TableEmbedsFields']$" />
          </Component>
          <Component Alias="DataCollection" Path="$Context/Path[Relationship='System.LinkingFramework.ConnectorEmbedsCollections' TypeConstraint='System.LinkingFramework.DataCollection']$" />
 </TypeProjection>

이 코드에서 DataTable, FieldDataCollection 은 다음과 같이 정의됩니다.

  • DataTable. 데이터 전송을 위해 정의된 가장 작은 데이터 단위로, 외부 데이터 원본에서 검색할 데이터의 선언입니다. 또한 데이터 일괄 처리, 워터마크 처리 및 영구 제거가 완료되면 다른 데이터 테이블 간의 종속성을 정의합니다.

  • 필드입니다. 데이터 테이블의 단일 열입니다.

  • DataCollection. 하나의 데이터 전송 작업 또는 세션에서 전송되는 데이터 테이블 집합으로, 이 데이터 컬렉션에 포함되는 데이터 테이블을 정의합니다.

사용자 지정 관리 팩의 속성

다음 표에서는 사용자 지정 Configuration Manager 커넥터 구성 관리 팩의 각 속성에 대한 세부 정보를 제공합니다. 이러한 지침에 따라 사용자 지정 관리 팩을 만듭니다.

속성 필요한 값 가져온 후 확인
ID 샘플에 표시된 대로 DataProviderDataConsumer 템플릿 모두에 대해 Yes
DataConnector 속성
DataConnectorName DataProviderDataConsumer 템플릿 모두에 대해 샘플의 값과 동일합니다. Yes
IsProvider DataProvider 템플릿에서 - True

DataConsumer 템플릿에서 - False
Yes
SolutionName 주석입니다. 예를 들어 가져온 데이터 유형을 표시할 수 있습니다. 솔루션 이름이 이미 사용 중인 관리 팩을 가져오려고 하면 오류가 발생하여 이벤트 로그에 기록됩니다.
Entrypoint, EntryAssembly & WinformUIAssembly 샘플 값과 동일
InstallSQLScripts 섹션 준비 테이블을 설정한 후 실행해야 하는 SQL 스크립트로, 일반적으로 DataConsumer 템플릿에서 스테이징 테이블의 데이터를 표시하는 뷰를 구성하는 데 사용됩니다.

스크립트/스크립트><> 태그 사이에 <묶인 모든 항목은 유효한 SQL 스크립트여야 합니다. 따라서 주석의 경우 표준 XML 주석 태그 대신 및 */ 다중 줄 주석 구분 기호를 사용해야 /* 합니다.
확인 안 함. 사용자 지정 테이블 이름을 사용하여 관리 팩에 선언된 한 테이블을 제외한 모든 테이블을 덮어쓰거나 변경하지 않도록 합니다.
UnInstallSQLScripts 섹션 Service Manager 콘솔에서 Configuration Manager 커넥터 관리 팩을 삭제한 후 실행해야 하는 SQL 스크립트입니다.

스크립트/스크립트><> 태그 사이에 <묶인 모든 항목은 유효한 SQL 스크립트여야 합니다. 따라서 주석의 경우 표준 XML 주석 태그 대신 및 */ 다중 줄 주석 구분 기호를 사용해야 /* 합니다.
확인 안 함. 사용자 지정 테이블 이름을 사용하여 관리 팩에 선언된 테이블을 제외한 모든 테이블을 덮어쓰거나 변경하지 않도록 합니다.
DisableParallelProcessing True
DataTable 속성
DataName 가져올 데이터가 있는 테이블로, UI(사용자 인터페이스)에서 사용되며 쿼리에는 사용되지 않습니다.
StageTableName 준비 테이블 이름으로, 고유해야 합니다. 테이블 이름이 이미 사용 중인 관리 팩을 가져오려고 하면 오류가 발생하여 이벤트 로그에 기록됩니다.
WatermarkField rowversion 열 이름
WatermarkType 가능한 값은 다음과 같습니다.

- 0-DateTime 형식을 나타냅니다.
- 1- 타임스탬프 형식을 나타냅니다.
- (-1)-워터마크 없음을 나타냅니다. 이 경우 WatermarkField 는 선택 사항이 됩니다.
다른 유형의 워터마크는 지원되지 않습니다.
BatchIdField 준비 테이블로 가져올 때 증분 데이터를 일괄 처리로 나누는 데 사용되는 최적의 선택 항목이 포함된 열의 이름
BatchIdType 가능한 값은 다음과 같습니다.

- 0-Int
- (-1)-일괄 처리 없음(이 경우 BatchIdField 는 선택 사항)이 됩니다.
정수 열
BatchIdSize 일괄 처리가 사용되는 경우의 일괄 처리 크기, 숫자가 높을수록 많은 데이터를 동시에 읽거나 쓸 수 있습니다. 권장 값은 500입니다. 정수 열
UseCache True
GroomType 가능한 값은 다음과 같습니다.

- 1- 스테이징 테이블의 데이터는 Service Manager 데이터베이스로 전송된 후 정리할 수 있습니다.
- 2- 준비 테이블의 데이터는 Configuration Manager 데이터베이스에서 삭제된 것으로 표시되고 Service Manager 커넥터 동기화로 인해 Service Manager 데이터베이스에서도 삭제된 후에만 정리됩니다.
QueryString Configuration Manager 2007에서 요청한 데이터를 검색하는 데 사용하는 실제 쿼리입니다. 쿼리 양식은 다음과 같아야 합니다.

SELECT ...

FROM ...

WHERE ...

ORDER BY ...

WHERE 절에는 토큰이 $COLLECTIONLIST 포함될 수 있습니다. 동기화하는 동안 이 토큰은 System Center Configuration Manager 커넥터 마법사에 지정된 컬렉션으로 대체됩니다.

Configuration Manager SCCM_Ext.* 뷰에서 노출되는 데이터는 가져오기에 지원됩니다. 이 데이터는 표준 sms_def.mof 확장 또는 noidmif를 사용하여 확장할 수 있습니다. 다른 테이블은 지원되지 않습니다.

특히 하위 쿼리는 지원되지 않지만 다른 테이블에 대한 조인은 지원됩니다.
확인 안 함. 모든 쿼리에는 행이 업데이트 또는 삭제 작업을 나타내는지 여부를 나타내는 값 U 또는 D가 있는 Lfx_Status 열이 있습니다.
CollectionName 데이터 테이블의 그룹 이름으로, 고유해야 합니다. 동일한 컬렉션의 테이블은 서로 의존할 수 없습니다. 컬렉션 이름이 이미 사용 중인 관리 팩을 가져오려고 하면 오류가 발생하여 이벤트 로그에 기록됩니다.
PrimaryKeyName 준비 테이블의 고유한 기본 키 이름을 선언하는 섹션입니다. 키 이름이 이미 사용 중인 관리 팩을 가져오려고 하면 오류가 발생하여 이벤트 로그에 기록됩니다.
DependOnDataTable 이 속성 전에 먼저 동기화해야 할 DataTable 의 이름으로, 일반적으로 시스템이 소비자 보기에서 속성을 읽기 전에 준비 테이블을 동기화하는 데 사용됩니다.

여러 컬렉션을 사용하는 경우 종속성은 다른 컬렉션의 테이블 간에만 표현되어야 합니다.
확인 안 함
DataField 속성
Name, Type, AllowNull 열 유형에 필요한 필드로, 지원되는 유형은 int, nvarchar, datetimexml입니다. 확인 안 함
PrimaryKeyACs, PrimaryKeyPosition 기본 키의 일부가 기본 키의 왼쪽에서 위치를 나타내는 경우 Lfx는 PK의 끝에 두 개의 내부 사용 열(Lfx_Status, Lfx_SourceId)을 추가합니다.
데이터 정렬 COLLATE 확인 안 함
DataCollection 속성
DataCollectionName DataTable 속성에서 참조되는 것과 동일해야 합니다. 컬렉션 이름이 이미 사용 중인 관리 팩을 가져오려고 하면 오류가 발생하여 이벤트 로그에 기록됩니다.
StagingName DataProvider 템플릿에서 DefaultCache

DataConsumer 템플릿에 없음
확인 안 함
DataTables 이 컬렉션을 참조하는 테이블의 CSV(쉼표로 구분된 값) 목록
설정 DataProvider 템플릿에서-존재하지 않음

DataConsumer 템플릿에서 형식 매핑을 나타냅니다.
다음 구문을 사용하여 XML 이스케이프:

<TypeName>Microsoft.Windows.Computer</TypeName>

<MPName>Microsoft.Windows.Library</MPName>

<MPVersion>version of MP</MPVersion>

<MPToken>token for MP</MPToken>

사용자 지정 Configuration Manager 커넥터 구성 관리 팩 샘플

다음은 Configuration Manager SCCM_Ext.vex_GS_PC_BIOS 보기에서 데이터를 가져오는 스키마 정의 및 Configuration Manager 커넥터 관리 팩 샘플입니다.

이러한 관리 팩의 속성에 대한 자세한 내용은 이 문서의 앞부분에 있는 표를 참조하세요. Microsoft Visual Studio 편집기와 같은 XML 편집기를 사용하여 가져오기 시나리오에 맞게 이들 샘플을 수정합니다.

호스트된 클래스에서 데이터 가져오기

호스트되는 클래스를 지정할 때 DataConsumer 템플릿의 뷰에는 부모 클래스의 키 속성에 대한 열이 포함되어야 합니다. 이 샘플에서는 BIOS 정보가 포함된 클래스가 컴퓨터에서 호스트됩니다.

이 예에서는 Configuration Manager 커넥터 구성 관리 팩의 DataProviderDataConsumer 섹션에 두 개의 컬렉션이 있으며, 첫 번째는 컴퓨터 데이터를 가져오기 위한 것이고 두 번째는 BIOS 데이터를 가져오기 위한 것입니다.

클래스 정의


<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1">
  <Manifest>
    <Identity>
      <ID>SampleBIOSMP</ID>
      <Version>1.0.0.0</Version>
    </Identity>
    <Name>BIOS Class MP</Name>
    <References>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="Windows">
        <ID>Microsoft.Windows.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <TypeDefinitions>
    <EntityTypes>
      <ClassTypes>
        <ClassType ID="HostedCustomClass" Accessibility="Public" Base="System!System.ConfigItem" Hosted="true" Abstract="false">
            <Property ID="SerialNumber" Type="string" Key="true"/>
        </ClassType>
      </ClassTypes>
      <RelationshipTypes>
        <RelationshipType ID="Microsoft.Windows.ComputerHostsBIOS" Accessibility="Public" Base="System!System.Hosting">
          <Source ID="Computer" Type="Windows!Microsoft.Windows.Computer" />
          <Target ID="BIOSClass" Type="HostedCustomClass" />
        </RelationshipType>      
      </RelationshipTypes>
    </EntityTypes>
  </TypeDefinitions>
</ManagementPack>

Configuration Manager 커넥터 구성 관리 팩

<ManagementPack xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" ContentReadable="true" SchemaVersion="1.1" OriginalSchemaVersion="1.1">
  <Manifest>
    <Identity>
      <ID>CnfgMgrBiosSample</ID>
      <Version>7.0.5229.0</Version>
    </Identity>
    <Name>CnfgMgrBiosSample</Name>
    <References>
      <Reference Alias="System">
        <ID>System.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
      <Reference Alias="LFX">
        <ID>ServiceManager.LinkingFramework.Library</ID>
        <Version>7.0.5229.0</Version>
        <PublicKeyToken>31bf3856ad364e35</PublicKeyToken>
      </Reference>
    </References>
  </Manifest>
  <Templates>
    <ObjectTemplate ID="DataProvider.Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms" TypeID="LFX!System.LinkingFramework.DataConnector.Projection">
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DataConnectorName$">
          Microsoft_EnterpriseManagement_ServiceManager_Connector_Sms
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/IsProvider$">
          True
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/SolutionName$">SampleBIOS</Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryPoint$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms.SmsConnector
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryAssembly$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms,
          Version="7.0.5000.0",
          Culture=neutral,
          PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/WinFormUIAssembly$">
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms.SmsConnector,   
          Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms, Version="7.0.5000.0", Culture=neutral,
          PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/InstallSQLScripts$"></Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DisableParallelProcess$">
          True
      </Property>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.Sample_vex_R_System</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_R_System</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">S.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">S.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT S.ResourceID,
                                S.ChangeAction as Lfx_Status,
                                S.Netbios_Name0,
                                S.Resource_Domain_OR_Workgr0
                            FROM SCCM_Ext.vex_R_System S
                            INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                                ON S.ResourceID = CM.ResourceID
                            INNER JOIN SCCM_Ext.vex_Collection C
                                ON C.CollectionID = CM.CollectionID
                            WHERE ((S.ChangeAction = 'U' AND S.Client_Type0 != 3 AND S.Hardware_ID0 IS NOT NULL)
                                  OR S.ChangeAction = 'D')
                                  AND $COLLECTIONLIST
                            ORDER BY S.rowversion
                   ]]>
</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">BIOSComputers</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_R_SYSTEM]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">Netbios_Name0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">64</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">Resource_Domain_OR_Workgr0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">255</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_GS_COMPUTER_SYSTEM</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">CS.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">CS.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT CS.ResourceID,
                                    CS.GroupKey,
                                    CS.ChangeAction as Lfx_Status,
                                    CS.Name0,
                                    CS.Domain0
                            FROM SCCM_Ext.vex_GS_COMPUTER_SYSTEM CS
                            INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                                ON CS.ResourceID = CM.ResourceID
                            INNER JOIN SCCM_Ext.vex_Collection C
                                ON C.CollectionID = CM.CollectionID  
                            WHERE $COLLECTIONLIST
                            ORDER BY CS.rowversion
                   ]]>
</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">BIOSComputers</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_GS_COMPUTER_SYSTEM]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[GroupKey]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">1</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[Name0]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">64</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[Domain0]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">32</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">SCCM_Ext.vex_GS_PC_BIOS</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/StageTableName$">Sample_SMS_vex_GS_PC_BIOS</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">S.[rowversion]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">1</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">S.[ResourceID]</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">2000</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">true</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/GroomType$">2</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                      SELECT S.ChangeAction as Lfx_Status,
                      S.ResourceID,
                      S.BatchingKey,
                      S.GroupKey,
                      S.SerialNumber0
                      FROM SCCM_Ext.vex_GS_PC_BIOS S
                      INNER JOIN SCCM_Ext.vex_FullCollectionMembership CM
                        ON S.ResourceID = CM.ResourceID
                      INNER JOIN SCCM_Ext.vex_Collection C
                        ON C.CollectionID = CM.CollectionID
                      WHERE C.ChangeAction = 'U' AND CM.ChangeAction = 'U' AND $COLLECTIONLIST
                      ORDER BY S.rowversion
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_PROVIDER_BIOS_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/PrimaryKeyName$">[Sample_SMS_PK_v_GS_BIOS1]</Property>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">[ResourceID]</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyPosition$">0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/PrimaryKeyAcs$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">BatchingKey</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">false</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">GroupKey</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">Int</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
        <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.TableEmbedsFields' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.Field']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Name$">SerialNumber0</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Type$">NVarChar</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Size$">34</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/Collation$">DATABASE_DEFAULT</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.Field']/AllowNull$">true</Property>
        </Object>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">BIOSComputers</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/StagingName$">DefaultCache</Property>
          <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">SCCM_Ext.Sample_vex_R_System,SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM</Property>
      </Object>
      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_PROVIDER_BIOS_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/StagingName$">DefaultCache</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">SCCM_Ext.vex_GS_PC_BIOS</Property>
      </Object>
    </ObjectTemplate>

    <ObjectTemplate ID="DataConsumer.Microsoft.EnterpriseManagement.ServiceManager.Connector.Sms" TypeID="LFX!System.LinkingFramework.DataConnector.Projection">
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/DataConnectorName$">
          MomStore
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/IsProvider$">
          False
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/SolutionName$">SampleBIOS</Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryPoint$">
  Microsoft.EnterpriseManagement.ServiceManager.Linking.Consumer.OperationalStore.OperationalStoreConsumer
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/EntryAssembly$">
  Microsoft.EnterpriseManagement.ServiceManager.Linking.Consumer.OperationalStore,
  Version="7.0.5000.0",
  Culture=neutral,
  PublicKeyToken="31bf3856ad364e35"
      </Property>
      <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/InstallSQLScripts$"><![CDATA[
                        <Script>
                             if not object_id('[LFXSTG].[v_Sample_SMS_BIOSComputer]') is null
                                drop view [LFXSTG].[v_Sample_SMS_BIOSComputer];
                             exec ('
                                CREATE VIEW [LFXSTG].[v_Sample_SMS_BIOSComputer] AS
                                    SELECT S.Lfx_RowId,
                                           S.Lfx_SourceID,
                                           S.Lfx_Timestamp,
                                           S.Lfx_Status,
                                           CS.Name0 AS ''DisplayName'',
                                           COALESCE(CS.Name0, S.Netbios_Name0)
                                    + ''.'' + COALESCE(CS.Domain0, S.Resource_Domain_OR_Workgr0) AS ''PrincipalName''
                                    FROM LFXSTG.Sample_SMS_vex_R_System S
                                    INNER JOIN LFXSTG.Sample_SMS_vex_GS_COMPUTER_SYSTEM CS
                                         ON S.ResourceID = CS.ResourceID AND S.Lfx_SourceId = CS.Lfx_SourceId
                                    WHERE S.Netbios_Name0 IS NOT NULL
                                        AND S.Resource_Domain_OR_Workgr0 IS NOT NULL
                                ');
                        </Script>

                        <Script>
                            if not object_id('[LFXSTG].[v_Sample_BIOS]') is null
                                drop view [LFXSTG].[v_Sample_BIOS]
                            exec ('
                                CREATE VIEW [LFXSTG].[v_Sample_BIOS] AS
                                    SELECT P.Lfx_RowId AS Lfx_RowId,
                                        P.Lfx_SourceId,
                                        P.Lfx_Timestamp AS Lfx_Timestamp,
                                        P.Lfx_Status as Lfx_Status,
                                        P.SerialNumber0 AS ''SerialNumber'',
                                        COALESCE(CS.Name0, S.Netbios_Name0) + ''.'' + COALESCE(CS.Domain0, S.Resource_Domain_OR_Workgr0) AS ''PrincipalName''
                                    FROM [LFXSTG].Sample_SMS_vex_GS_PC_BIOS P
                                    INNER JOIN [LFXSTG]. Sample_SMS_vex_R_System S
                                        ON P.ResourceID=S.ResourceID AND P.Lfx_SourceId = S.Lfx_SourceId
                                    INNER JOIN [LFXSTG]. Sample_SMS_vex_GS_COMPUTER_SYSTEM CS
                                        ON S.ResourceID=CS.ResourceID
                                           AND S.Lfx_SourceId = CS.Lfx_SourceId
                                ')
                        </Script>
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataConnector']/UninstallSQLScripts$"><![CDATA[
                       <Script>
                            if not object_id('[LFXSTG].[v_Sample_SMS_BIOSComputer]') is null
                                drop view [LFXSTG].[v_Sample_SMS_BIOSComputer];
               </Script>

                       <Script>
                            if not object_id('[LFXSTG].[v_Sample_BIOS]') IS NULL
                                drop view [LFXSTG].[v_Sample_BIOS];
               </Script>
                   ]]>
        </Property>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">Sample_SMS_Computer</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">E.Lfx_Timestamp</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">E.Lfx_RowId</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">500</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">false</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                            SELECT * FROM [LFXSTG].v_Sample_SMS_BIOSComputer E
                    ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_Computers_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DependOnDataTable$">SCCM_Ext.Sample_vex_GS_COMPUTER_SYSTEM,SCCM_Ext.Sample_vex_R_System</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsTables' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataTable']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DataName$">Sample_SMS_BIOS_CONSUMER_VIEW</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkField$">C.Lfx_Timestamp</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/WatermarkType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdField$">C.Lfx_RowId</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdType$">0</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/BatchIdSize$">500</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/UseCache$">False</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/QueryString$"><![CDATA[
                        select C.* from [LFXSTG].v_Sample_BIOS C
                   ]]>
        </Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/CollectionName$">Sample_SMS_BIOS_CONSUMER_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataTable']/DependOnDataTable$">SCCM_Ext.vex_GS_PC_BIOS, Sample_SMS_Computer</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_Computers_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">Sample_SMS_Computer</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/Settings$"><![CDATA[
<TypeName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">Microsoft.Windows.Computer</TypeName>
<MPName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">Microsoft.Windows.Library</MPName>
<MPVersion xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">7.0.5229.0</MPVersion>
<MPToken xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">31bf3856ad364e35</MPToken>
]]>
</Property>
      </Object>

      <Object Path="$Context/Path[Relationship='LFX!System.LinkingFramework.ConnectorEmbedsCollections' SeedRole='Source' TypeConstraint='LFX!System.LinkingFramework.DataCollection']$">
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataCollectionName$">Sample_SMS_BIOS_CONSUMER_COLLECTION</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/DataTables$">Sample_SMS_BIOS_CONSUMER_VIEW</Property>
        <Property Path="$Context/Property[Type='LFX!System.LinkingFramework.DataCollection']/Settings$"><![CDATA[
<TypeName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">HostedCustomClass</TypeName>
<MPName xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">SampleBIOSMP</MPName>
<MPVersion xmlns="https://schemas.microsoft.com/sdm/servicedesk/linking/2005/09">1.0.0.0</MPVersion>
        ]]>
        </Property>
      </Object>
    </ObjectTemplate>
  </Templates>
</ManagementPack>

다음 단계