セッションが記録されない
アプリケーションセッションが正常に記録されない場合は、Session RecordingエージェントおよびSession Recordingサーバーのイベントビューアーでアプリケーションイベントログを確認してください。これにより、貴重な診断情報が得られる場合があります。
セッションが記録されない場合、考えられる原因は次のとおりです。
- コンポーネントの接続と証明書。Session Recordingコンポーネントが相互に通信できない場合、セッションの記録が失敗することがあります。記録の問題をトラブルシューティングするには、すべてのコンポーネントが正しいマシンを指すように正しく構成されており、すべての証明書が有効で正しくインストールされていることを確認してください。
- Active Directoryドメイン以外の環境。Session Recordingは、Microsoft Active Directoryドメイン環境で実行するように設計されています。Active Directory環境で実行していない場合、記録の問題が発生する可能性があります。すべてのSession RecordingコンポーネントがActive Directoryドメインのメンバーであるマシンで実行されていることを確認してください。
- セッション共有がアクティブなポリシーと競合する。Session Recordingは、ユーザーが最初に開いた公開アプリケーションとアクティブなポリシーを照合します。同じセッション中に開かれた後続のアプリケーションは、最初のアプリケーションに適用されるポリシーに従い続けます。セッション共有がアクティブなポリシーと競合するのを防ぐには、競合するアプリケーションを別々のマルチセッションOS VDAに公開してください。
- 記録が有効になっていない。デフォルトでは、マルチセッションOS VDAにSession Recording Agentをインストールすると、そのVDAの記録が有効になります。記録は、アクティブな記録ポリシーが許可するように構成されるまで行われません。
- アクティブな記録ポリシーが記録を許可していない。セッションは、アクティブな記録ポリシーのルールを満たしている場合にのみ記録できます。
- Session Recordingサービスが実行されていない。セッションを記録するには、マルチセッションOS VDAでSession Recording Agentサービスが実行されており、Session RecordingサーバーをホストするマシンでSession Recording Storage Managerサービスが実行されている必要があります。
- MSMQが構成されていない。Session Recording Agentを実行しているサーバーとSession RecordingサーバーをホストしているマシンでMSMQが正しく構成されていない場合、記録の問題が発生する可能性があります。
-
Session Recordingデータベースコンポーネントが適切にアップグレードされていない。既存のインストールをアップグレードする場合、アップグレードシーケンスを厳密に守る必要があります。展開に複数のSession Recordingサーバーがある場合、Session RecordingデータベースコンポーネントがインストールされているSession Recordingサーバーを最初にアップグレードする必要があります。そうしないと、セッションの記録が失敗します。Session Recordingデータベースコンポーネントが適切にアップグレードされていない問題を修正するには、次のいずれかの操作を実行します。
-
セッションレコーディングデータベースコンポーネントがインストールされているセッションレコーディングサーバーを見つけます。次に、そのサーバーでCitrix Virtual Apps and Desktops ISOまたはSessionRecordingAdministrationx64.msiパッケージを実行します。
-
展開内のいずれかのSession Recordingサーバーで次のスクリプトを実行します。スクリプトを実行する際は、SessionRecordingAdministrationx64.msiパッケージへのパスをパラメーターとして指定します。
param( [Parameter(Mandatory=$true)] [ValidateNotNullOrEmpty()] [string]$Installer ) Add-Type -AssemblyName System.Data if (!(Test-Path "$PSScriptRoot\bin\lessmsi.exe")) { Write-Error "Download zip of binaries from https://github.com/activescott/lessmsi/releases/download/v1.10.0/lessmsi-v1.10.0.zip and extract to \bin in this folder!" exit } # Open MSI database $msi = New-Object -ComObject WindowsInstaller.Installer $msidb = $msi.OpenDatabase($Installer, 0) # Query File table $query = "SELECT Version FROM File WHERE FileName = 'SMAUDD~1.DLL|SsRecDatabase.dll'" $view = $msidb.OpenView($query) $view.Execute() # Get DLL version $record = $view.Fetch() $version = $record.GetType().InvokeMember("StringData", "GetProperty", $null, $record, 1) $parts = $version.Split(".") [int] $major = $parts[0] [int] $minor = $parts[1] $majorMinor = $parts[0..1] -join "." $versionCompare = $major * 100 + $minor # Get db instance and name $registryKey = [Microsoft.Win32.Registry]::LocalMachine.OpenSubKey("SOFTWARE\\Citrix\\SmartAuditor\\Server") $dbName = $registryKey.GetValue("DatabaseName") $dbInstance = $registryKey.GetValue("SmAudDatabaseInstance") write-host "Upgrade db($dbInstance\$dbName) to version $version" $schemaVersionMap = @{} $schemaVersionMap["19.12"] = "1.2.3.0" $schemaVersionMap["22.3"] = "1.3.3.0" $schemaVersionMap["22.6"] = "1.3.4.0" $schemaVersionMap["22.9"] = "1.3.4.0" $schemaVersionMap["22.12"] = "1.3.5.0" $schemaVersionMap["23.3"] = "1.3.6.0" $schemaVersionMap["23.5"] = "1.3.7.0" $schemaVersionMap["23.8"] = "1.3.8.0" $DBSchemaUpdatePatchList = @( "1.1.0.0", "1.2.0.0", "1.2.1.0", "1.2.2.0", "1.2.3.0", "1.2.4.0", "1.2.5.0", "1.2.6.0", "1.2.7.0", "1.2.8.0", "1.2.9.0", "1.3.0.0", "1.3.1.0", "1.3.2.0", "1.3.3.0", "1.3.4.0", "1.3.5.0", "1.3.6.0", "1.3.7.0", "1.3.8.0" ) $currentSchemaVersion = $schemaVersionMap[$majorMinor] # Connect db $conn = New-Object System.Data.SqlClient.SqlConnection $conn.ConnectionString = "workstation id=.;packet size=4096;integrated security=SSPI;data source=$dbInstance;persist security info=True;initial catalog=$dbName" # Open connection $conn.Open() # Get existing db schema version $cmdGetSchema = $conn.CreateCommand() $cmdGetSchema.CommandType = [System.Data.CommandType]::StoredProcedure $cmdGetSchema.CommandText = "[GetSchemaVersion]" $out1 = $cmdGetSchema.Parameters.Add("@Major", [System.Data.SqlDbType]::Int) $out1.Direction = [System.Data.ParameterDirection]::Output $out2 = $cmdGetSchema.Parameters.Add("@Minor", [System.Data.SqlDbType]::Int) $out2.Direction = [System.Data.ParameterDirection]::Output $out3 = $cmdGetSchema.Parameters.Add("@Build", [System.Data.SqlDbType]::Int) $out3.Direction = [System.Data.ParameterDirection]::Output $out4 = $cmdGetSchema.Parameters.Add("@Revision", [System.Data.SqlDbType]::Int) $out4.Direction = [System.Data.ParameterDirection]::Output $cmdGetSchema.ExecuteNonQuery() $existDbSchemaVersion = [string]::Format("{0}.{1}.{2}.{3}", $out1.Value, $out2.Value, $out3.Value, $out4.Value) write-host "Existing DB Schema Version: $existDbSchemaVersion" if ([string]::Compare($existDbSchemaVersion, $currentSchemaVersion) -lt 0) { Write-Output "Upgrade $existDbSchemaVersion to $currentSchemaVersion" & $PSScriptRoot\bin\lessmsi.exe x $Installer $PSScriptRoot\ SsRecDatabase.dll $tempdir = "$PSScriptRoot\SOURCEDIR\Program Files\Citrix\SessionRecording\Database\Bin" # Load assembly and get resource $asm = [Reflection.Assembly]::LoadFile("$tempdir\SsRecDatabase.dll") foreach ($patch in $DBSchemaUpdatePatchList) { if ([string]::Compare($existDbSchemaVersion, $patch) -le 0 -and [string]::Compare($patch, $currentSchemaVersion) -lt 0) { write-host "Applying $patch" # switch to db $switchCmd = $conn.CreateCommand() $switchCmd.CommandText = "use [$dbName]" $switchCmd.ExecuteNonQuery() $resStream = $asm.GetManifestResourceStream("SmAudDatabase.$patch-MigrateDatabase.sql") $bytes = New-Object byte[] $resStream.Length $resStream.Read($bytes, 0, $resStream.Length) $script = [System.Text.Encoding]::UTF8.GetString($bytes) $statements = [regex]::Split($script, "\s[gG][oO]\s") foreach($statement in $statements) { $upgradeCmd = $conn.CreateCommand() $upgradeCmd.CommandText = $statement $upgradeCmd.ExecuteNonQuery() } $existDbSchemaVersion = $patch } else { write-host "Skip $patch" } } # UpdateStaticData $staticCmd = $conn.CreateCommand() $staticCmd.CommandText = "use [$dbName];if not exists(select * from [dbo].[StartReason] where ID=4) begin insert [dbo].[StartReason] values(4, 'Event Triggered') end" $staticCmd.ExecuteNonQuery() if ($versionCompare -ge 2308) { # upgrade record policy version $staticCmd = $conn.CreateCommand() $staticCmd.CommandText = "update [dbo].[PolicyDocument] set PolicyFileFormatMajorVersion = 1, PolicyFileFormatMinorVersion = 3 where SystemDefined = 1" $staticCmd.ExecuteNonQuery() # upgrade endreason $staticCmd = $conn.CreateCommand() $staticCmd.CommandText = "if not exists(select * from [dbo].[EndReason] where ID=5) begin insert [dbo].[EndReason] values(5 , 'Dormant') end" $staticCmd.ExecuteNonQuery() } if ($versionCompare -ge 2311) { # upgrade endreason $staticCmd = $conn.CreateCommand() $staticCmd.CommandText = "if not exists(select * from [dbo].[EndReason] where ID=6) begin insert [dbo].[EndReason] values(6 , 'Deny') end" $staticCmd.ExecuteNonQuery() } write-host "Upgrade success!" } else { Write-Output "Current schema version don't need upgrade" } $conn.Close() <!--NeedCopy-->
-