콘텐츠 데이터 액세스 - 진단 - 응용 프로그램

Microsoft.AppVirtualization.Server.45.VirtualApplicationServer.ContentDataAccess_NewDiagnoser_Application (UnitMonitor)

콘텐츠 데이터 액세스 노드는 Application Virtualization Management Server의 기능을 모니터링하여 로컬 디렉터리 또는 네트워크 공유인 콘텐츠 디렉터리에 액세스한 후 요청한 파일을 읽습니다. 콘텐츠 디렉터리에는 .SFT 파일을 포함한 패키지가 있습니다.

Knowledge Base article:

요약

콘텐츠 데이터 액세스 노드는 Application Virtualization Management Server의 기능을 모니터링하여 로컬 디렉터리 또는 네트워크 공유인 콘텐츠 디렉터리에 액세스한 후 요청한 파일을 읽습니다. 콘텐츠 디렉터리에는 .SFT 파일을 포함한 패키지가 있습니다.
진단

다음 조건 중 하나에 해당하면 콘텐츠 데이터 액세스 문제가 발생합니다.
  1. 콘텐츠 디렉터리의 경로가 잘못된 경우
  2. Application Virtualization Server 로그온 계정에 콘텐츠 디렉터리에 대한 적절한 권한이 없는 경우
  3. 콘텐츠 데이터 액세스 위치에 디스크 공간 또는 하드웨어 문제가 있는 경우

콘텐츠 데이터 액세스 문제는 대부분 콘텐츠 공유에 대한 액세스 권한으로 인해 발생합니다. HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SoftGrid\4.5\Server\SOFTGRID_CONTENT_DIR 레지스트리 값에 나열된 콘텐츠 디렉터리 위치를 찾을 수 있습니다.

기본적으로 콘텐츠 디렉터리의 경로는 다음과 같습니다.  %ProgramFiles%\Microsoft System Center App Virt Management Server\App Virt Management Server\content

콘텐츠 디렉터리의 경로는 Application Virtualization Server의 로컬 레지스트리 및 Application Virtualization 데이터베이스에서 구성됩니다. Application Virtualization Management Server 서비스는 시작될 때 레지스트리에 구성되어 있는 경로에 연결하려고 합니다. Application Virtualization Server 서비스는 연결할 수 없는 경우 Application Virtualization 데이터베이스에 구성되어 있는 경로에 연결합니다. Application Virtualization Server 서비스에 다시 연결할 수 없는 경우 서비스가 시작되지 않습니다.
 
기본적으로 Application Virtualization Server 로그온 계정은 NETWORK SERVICE 계정입니다. Application Virtualization Server 로그온 계정은 콘텐츠 계정에 대한 읽기 권한이 필요합니다. 콘텐츠 디렉터리의 경로가 UNC(범용 명명 규칙) 경로인 경우 Application Virtualization Server 로그온 계정은 공유에 대한 읽기 권한이 필요합니다. Application Virtualization Server 로그온 계정에 적절한 권한이 없는 경우 서비스가 시작되지 않습니다.
 
Application Virtualization Server 로그온 계정에 콘텐츠 디렉터리에 대한 적절한 권한이 있는지 확인하려면 다음 단계를 수행합니다.
 
Application Virtualization Management Server 로그온 계정을 결정합니다. 그렇게 하려면 다음 단계를 수행합니다.
  1. 제어판에서 관리 도구를 열고 서비스를 시작합니다.
  2. Application Virtualization Server를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
  3. 로그온 탭을 클릭합니다.
  4. 다음 계정으로 로그온에 계정 지정이 선택되어 있는 경우 계정 지정 상자에 지정되어 있는 계정(기본값: NETWORK SERVICES)에 유의합니다. 다음 계정으로 로그온에 로컬 시스템 계정이 선택되어 있는 경우 Application Virtualization Server 로그온 계정이 로컬 시스템(SYSTEM) 계정입니다. 
  5. 콘텐츠 디렉터리가 UNC 경로인 경우 Application Virtualization Server 로컬 컴퓨터 계정을 사용합니다(사용 권한이 있는 경우).
  6. 서비스를 종료합니다.
Application Virtualization Server 로그온 계정에 콘텐츠 계정에 대한 읽기 권한이 있는지 확인합니다. 이렇게 하려면 다음 단계를 수행합니다.
  1. Microsoft Windows 탐색기를 시작합니다.
  2. 콘텐츠 디렉터리를 찾습니다.
  3. 콘텐츠 폴더를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
  4. 보안 탭을 클릭합니다.
  5. 1단계에서 확인한 계정에 읽기 권한이 있는지 확인합니다. 계정에 읽기 권한이 있는 경우 허용 확인란을 클릭하여 선택합니다.
  6. 확인을 클릭한 다음 Windows 탐색기를 종료합니다.
  7. 1단계에서 확인한 계정에 읽기 권한이 있는지 확인합니다. 계정에 읽기 권한이 없는 경우 허용 확인란을 클릭하여 선택합니다.
  8. 확인을 클릭한 다음 Windows 탐색기를 종료합니다.
콘텐츠 디렉터리의 경로가 UNC 경로인 경우 Application Virtualization Server 로그온 계정에 공유에 대한 읽기 권한이 있는지 확인합니다. 이렇게 하려면 다음 단계를 수행합니다.
  1. Microsoft Windows 탐색기를 시작합니다.
  2. 콘텐츠 디렉터리를 찾습니다.
  3. 콘텐츠 폴더를 마우스 오른쪽 단추로 클릭한 다음 속성을 클릭합니다.
  4. 공유 탭을 클릭합니다.
  5. 1단계에서 확인한 계정에 공유에 대한 읽기 권한이 있는지 확인합니다. 계정에 읽기 권한이 없는 경우 읽기 권한에 대한 허용 확인란을 클릭하여 선택합니다.
  6. 확인을 클릭한 다음 Windows 탐색기를 종료합니다.

Element properties:

TargetMicrosoft.AppVirtualization.Server.45.VirtualApplicationServer
Parent MonitorMicrosoft.AppVirtualization.Server.45.ContentDataAccess_HWS.HealthState
CategoryEventCollection
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.SingleEventLogManualReset2StateMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
콘텐츠 데이터 액세스 - 진단 - 응용 프로그램
{0}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.AppVirtualization.Server.45.VirtualApplicationServer.ContentDataAccess_NewDiagnoser_Application" Accessibility="Public" Target="Microsoft.AppVirtualization.Server.45.VirtualApplicationServer" TypeID="Windows!Microsoft.Windows.SingleEventLogManualReset2StateMonitorType" ParentMonitorID="Microsoft.AppVirtualization.Server.45.ContentDataAccess_HWS.HealthState">
<Category>EventCollection</Category>
<AlertSettings AlertMessage="Microsoft.AppVirtualization.Server.45.VirtualApplicationServer.ContentDataAccess_NewDiagnoser_Application.Alert">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDescription$</AlertParameter1>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="EventRaised" MonitorTypeStateID="EventRaised" HealthState="Error"/>
<OperationalState ID="ManualResetEventRaised" MonitorTypeStateID="ManualResetEventRaised" HealthState="Success"/>
</OperationalStates>
<Configuration>
<ComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ComputerName>
<LogName>Application</LogName>
<Expression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Application Virtualization Server</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<Or>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">44899</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="UnsignedInteger">44900</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</Or>
</Expression>
</And>
</Expression>
</Configuration>
</UnitMonitor>