管理录制文件
ICA 日志数据库 (ICLDB) 是一个数据库命令行实用程序,用于操作会话录制数据库记录。在会话录制安装期间,此实用程序会安装到托管会话录制服务器的服务器上的 <Session Recording Server installation path>\Bin 文件夹中。
注意:
如果要使用 ICLDB 管理存储在 Azure 文件共享中的会话录制文件,请运行
SsRecUtils.exe -MountAzureFiles命令。SsRecUtils.exe 和 ICLDB 位于同一文件夹中。
快速参考图表
下表列出了 ICLDB 实用程序可用的命令和选项。使用以下格式键入命令:
ICLDB [VERSION | LOCATE | DORMANT | IMPORT | ARCHIVE | REMOVE | REMOVEALL] command-options [/L] [/F] [/S] [/?]
注意:
实用程序附带的帮助中提供了更详细的说明。要访问帮助,请在命令提示符下键入
\Program Files\Citrix\SessionRecording\Server\Bin文件夹,然后键入icldb /?。要访问特定命令的帮助,请键入icldb <specific command> /?。
| 命令 | 详细信息 |
|---|---|
ARCHIVE |
存档您指定的会话录制文件。您可以使用 FILEID 参数指定要存档的目标会话录制文件。您还可以使用 RETENTION 参数以及 FILTER 或 RULES 参数来指定目标会话录制文件。在第二种情况下,RETENTION 参数是强制性的。它允许您操作早于指定保留期的会话录制文件。有效的保留期至少为 2 天。因此,请将 RETENTION 设置为 2 或适合您需求的更大值。FILTER 和 RULES 参数是可选的。FILTER 参数允许您使用 * 和 ? 通配符筛选文件路径。RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个筛选器来设置高级筛选器。有关详细信息,请参阅此表后面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数。RULES 参数和 FILTER 参数不能一起使用。如果添加 FILTER 或 RULES 参数,则仅操作同时满足 RETENTION 和 FILTER 或 RULES 的会话录制文件。您可以存档录制文件中的录制内容和事件。事件存档在 ArchivedEvent 数据库表中。ICLDB ARCHIVE 命令示例:ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/MOVETO:<dir>] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]
|
DORMANT |
显示或计数被视为休眠或无响应的实时录制文件。当在指定时间段后没有新数据写入录制文件时,实时录制被视为无响应或休眠。您可以使用 FILEID 参数指定目标会话录制文件。您还可以检查会话录制文件是否正在整个数据库中休眠,或者仅检查在指定天数、小时数或分钟数内进行的录制。在时间参数(DAYS、HOURS 和 MINUTES)中,一次只能指定一个。您可以通过附加 CLOSEFILES 参数手动关闭无响应或休眠的实时录制。您还可以在会话录制服务器属性的存储选项卡上设置时间阈值,以便在超过阈值时自动关闭无响应或休眠的实时录制。有关详细信息,请参阅本文后面的 关闭无响应或休眠的实时录制。 |
IMPORT |
将会话录制文件导入到会话录制数据库。如果数据库记录丢失,请使用此命令重建数据库。此外,使用此命令合并数据库(如果您有两个数据库,可以从其中一个数据库导入文件)。2303 版本为 IMPORT 命令引入了 RELOCATE 参数。如果没有 RELOCATE 参数,IMPORT 命令会完整解析会话录制文件,这会耗费时间。使用 RELOCATE 参数,IMPORT 命令只需定位会话录制文件的数据库记录并直接更新其文件路径。ICLDB IMPORT 命令示例:ICLDB IMPORT [/LISTFILES] [/RECURSIVE] [/RELOCATE] [/L] [/F] [/S] [/?] [<file>] [<directory>]
|
LOCATE |
使用文件 ID 作为条件,定位并显示会话录制文件的完整路径。当您查找会话录制文件的存储位置时,请使用此命令。这也是验证数据库是否与特定文件保持同步的一种方法。ICLDB LOCATE 命令示例:ICLDB LOCATE /FILEID:<id> [/L] [/F] [/S] [/?]
|
REMOVE |
从数据库中删除对会话录制文件的引用。使用此命令(请谨慎)清理数据库。您还可以删除相关的物理文件。使用 REMOVE 命令时,您可以通过使用 FILEID 参数指定目标会话录制文件,或者使用 RETENTION 参数和 FILTER 或 RULES 参数指定目标会话录制文件。在第二种情况下,RETENTION 参数是强制性的。它允许您操作早于指定保留期的会话录制文件。有效的保留期至少为 2 天。因此,请将 RETENTION 设置为 2 或根据您的需要设置更大的值。FILTER 和 RULES 参数是可选的。FILTER 参数允许您使用 * 和 ? 通配符过滤文件路径。RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个过滤器来设置高级过滤器。有关详细信息,请参阅此表后面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数。RULES 参数和 FILTER 参数不能一起使用。如果您添加 FILTER 或 RULES 参数,则仅操作同时满足 RETENTION 和 FILTER 或 RULES 的会话录制文件。ICLDB REMOVE 命令示例:ICLDB REMOVE /RETENTION:<days> [/LISTFILES] [/DELETEFILES] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]
|
REMOVEALL |
从会话录制数据库中删除对会话录制文件的所有引用,并将数据库恢复到其原始状态。实际的物理文件不会被删除;但是,您无法在会话录制播放器中搜索这些文件。使用此命令(请谨慎)清理数据库。只有通过从备份还原才能撤销已删除的引用。 |
VERSION |
显示会话录制数据库架构版本。 |
/L |
将结果和错误记录到 Windows 事件日志。 |
/F |
强制命令在没有提示的情况下运行。 |
/S |
禁止显示版权信息。 |
/? |
显示命令的帮助。 |
The RULES parameter for ICLDB ARCHIVE and ICLDB REMOVE commands
RULES 参数通过严格按照 /RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"]; 格式组合多个筛选器来设置高级筛选器,其中:
-
“字段” 设置一个筛选器,使用一个字段,该字段可以是 “路径“、”用户“、”组“、”交付组“、”应用程序“、”服务器“、”客户端“,或名为 dbo.ICLFile 的数据库表中的任何其他列。
-
“In” 表示括号中的筛选条件至少有一个必须满足,录制文件才能成为操作对象。
-
“NotIn” 表示满足括号中任何筛选条件的录制文件将从操作中排除。
-
“CONDITION” 使用数据库表 dbo.ICLFile 中的记录(或行)设置筛选条件。
-
用户和组记录必须以
<domain>.<name>格式输入。 -
路径记录可以使用 Windows 通配符进行筛选。
-
必须用双引号 (
"") 将每个“CONDITION”项括起来,并用逗号 (,) 分隔两个“CONDITION”项。 -
输入“CONDITION”项时,请勿添加空格,除非“CONDITION”项本身包含空格。
-
如果“CONDITION”项包含一个或多个逗号,请用双引号将“CONDITION”项括起来,后跟转义的双引号
""" """。 -
可以使用多种筛选器组合。每个筛选器以分号 (
;) 结尾。 -
“AND”逻辑运算符用于计算多个过滤器。过滤器的数量没有限制,但 RULES 的总长度不得超过 2,048 字节。
示例:
/RULES:group-In-["BUILTIN.Guests"];/RULES:path-In-["S:\SessionRecordings\2023*"];group-NotIn-["Mydomain.Suspicious","Mydomain.Persistence"];/RULES:deliverygroup-In-["RdsDesktopAndAppGroup"];user-In-["Mydomain.AdminA","""Mydomain.Admin,,,B"""];/RULES:EndReasonID-In-["1","2"];
归档会话录制文件
为了在录制存储位置保持足够的备用磁盘容量,请定期归档会话录制文件。归档的间隔时间会根据可用的磁盘空间量和录制文件的典型大小而有所差异。会话录制文件必须在开始日期算起,已超过两天,方可被归档。制定此规则是为了防止任何正在进行的录制在尚未完成时就被归档。
归档会话录制时有两种可用方法。可以将录制文件的数据库记录更新为已归档状态,同时文件保留在录制存储位置。此方法可用于减少播放器中的搜索结果。另一种方法是将录制文件的数据库记录更新为已归档状态,并将文件从录制存储位置移动到另一个位置以备份到备用介质。移动会话录制文件时,ICLDB 实用程序会将它们移动到指定目录,其中原始的 年/月/日 文件文件夹结构不再存在。
会话录制数据库中的会话录制记录包含两个与归档相关的字段——归档时间和归档备注。归档时间表示录制被归档的当前日期和时间。归档备注是可在归档期间添加的可选文本备注。这两个字段指示录制已归档以及归档时间。
在会话录制播放器中,已归档的会话录制显示“已归档”状态以及归档日期和时间。如果文件未移动,则已归档的会话录制可能仍可播放。如果在归档期间移动了会话录制文件,则会显示“文件未找到”错误。必须先恢复会话录制文件,然后才能播放会话。要恢复会话录制文件,请提供录制文件的文件 ID 和归档时间。有关恢复已归档文件的更多讨论,请参阅以下 恢复会话录制文件 部分。
ICLDB 实用程序的 ARCHIVE 命令有几个参数,描述如下:
-
/FILEID:<id> - 允许您指定目标会话录制文件。您可以在会话录制播放器 (Windows) 中检查会话录制文件的 ID。录制文件名也可以用作文件 ID。
-
/RETENTION:<days> - 会话录制的保留期(天)。早于指定天数的录制在会话录制数据库中标记为已归档。保留期必须是大于或等于 2 天的整数。
-
/FILTER:<filter>: 允许您使用
*和?通配符过滤文件路径。FILTER 参数是可选的。如果添加 FILTER 参数,则只有同时满足 RETENTION 和 FILTER 的会话录制文件才会被归档。 -
/RULES:<高级筛选器>: 通过严格遵循
/RULES:FIELD-In-["CONDITION","CONDITION"];FIELD-NotIn-["CONDITION","CONDITION"];格式组合多个筛选器来设置高级筛选器。RULES 参数和 FILTER 参数不能一起使用。有关详细信息,请参阅本文中前面的 ICLDB ARCHIVE 和 ICLDB REMOVE 命令的 RULES 参数 部分。 -
/LISTFILES – 列出正在存档的会话录制文件的完整路径和文件名。此参数是可选的。
-
/MOVETO:<目录> - 物理移动存档的会话录制文件的目录。指定的目录必须存在。此参数是可选的。如果未指定目录,文件将保留在其原始存储位置。
-
/NOTE:<备注> - 添加到每个存档会话录制的数据库记录中的文本备注。请确保备注用双引号括起来。此参数是可选的。
-
/L – 将存档的会话录制文件数量的结果和错误记录到 Windows 事件日志中。此参数是可选的。
- /F – 强制存档命令在没有提示的情况下运行。此参数是可选的。
如何将会话录制存档到会话录制数据库并物理移动会话录制文件
-
以本地管理员身份登录到安装了会话录制服务器的服务器。
-
启动命令提示符。
-
将会话录制服务器安装路径 (
<Session Recording server Installation Path>\Bin) 的当前工作目录更改为 Bin 目录。 -
运行
ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/MOVETO:<dir>] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]命令。括号中的参数是可选的。运行命令时请删除括号。RULES 参数和 FILTER 参数不能一起使用。days 是会话录制文件的保留期,directory 是存档的会话录制文件移动到的目录,note 是添加到每个正在存档的会话录制文件的数据库记录中的文本备注。输入 Y 以确认存档。
如何仅在会话录制数据库中存档会话录制
-
以本地管理员身份登录到安装了会话录制服务器的服务器。
-
启动命令提示符。
-
将当前工作目录更改为会话录制服务器安装路径的 Bin 目录 (<会话录制服务器安装路径>\Bin)。
-
运行
ICLDB ARCHIVE /RETENTION:<days> [/LISTFILES] [/NOTE:<note>] [/FILTER:<file path filter>] [/RULES:<advanced filters>] [/L] [/F] [/S] [/?]命令。括号中的参数是可选的。运行命令时请删除括号。RULES 参数和 FILTER 参数不能同时使用。days 是会话录制的保留期,note 是添加到每个正在归档的会话录制数据库记录中的文本备注。输入 Y 确认归档。
恢复会话录制文件
要查看归档在会话录制数据库中并已从录制存储位置移出的录制文件,请将其恢复。在归档期间未从录制存储位置移出的已归档会话录制仍可在播放器中访问。
有两种方法可用于恢复已移动的会话录制文件。将所需的会话录制文件复制到归档文件的恢复目录。或者,使用 ICLDB 实用程序将所需的会话录制文件重新导入到会话录制数据库。我们建议使用第一种方法恢复已归档的会话录制文件。当您不再需要已复制到归档文件恢复目录的归档文件时,请将其删除。
当会话录制文件在其原始存储位置中找不到时,会话录制代理会使用“归档文件的恢复目录”。这种情况发生在播放器请求会话录制文件进行播放时。会话录制代理首先尝试在原始存储位置中查找会话录制文件。如果在原始存储位置中找不到该文件,则会话录制代理会检查“归档文件的恢复目录”。如果文件存在于恢复目录中,则会话录制代理会将文件发送到播放器进行播放。如果找不到文件,会话录制代理会向播放器发送文件未找到错误。
导入归档的录制文件会将文件中的会话录制信息(包括新的存储路径)更新到会话录制数据库中。然而,导入归档的会话录制文件并不会将文件移回会话录制时所用的原始存储位置。
注意: 导入的会话录制文件在会话录制数据库中的归档时间和归档备注已清除。下次运行 ICLDB ARCHIVE 命令时,导入的会话录制文件可能会再次归档。
ICLDB IMPORT 命令可用于导入大量归档的录制文件。它可以修复或更新会话录制数据库中不正确和缺失的会话录制数据。它还可用于将会话录制文件从会话录制服务器上的一个存储位置移动到另一个存储位置。运行 ICLDB REMOVEALL 命令后,您可以使用 ICLDB IMPORT 命令将会话录制重新填充到会话录制数据库中。
ICLDB 实用程序的 IMPORT 命令有几个参数可用于恢复归档的录制文件:
-
/LISTFILES – 列出正在导入的会话录制文件的完整路径和文件名。此参数是可选的。
-
/RECURSIVE – 搜索所有子目录中的会话录制文件。此参数是可选的。
-
/RELOCATE – 如果没有 RELOCATE 参数,IMPORT 命令会完整解析会话录制文件,这需要时间。使用 RELOCATE 参数,IMPORT 命令只需定位会话录制文件的数据库记录并直接更新其文件路径。
-
/L – 将导入的会话录制文件的数量结果和错误记录到 Windows 事件日志中。此参数是可选的。
-
/F – 强制 IMPORT 命令在没有提示的情况下运行。此参数是可选的。
注意:
ICLDB 实用程序的 IMPORT 命令还提供一个可选参数 RELOCATE,可用于重新定位录制文件。有关详细信息,请参阅本文中的重新定位会话录制文件部分。
通过使用存档文件的还原目录还原会话录制文件
-
以本地管理员身份登录到安装了会话录制服务器的服务器。
-
在会话录制播放器属性中,确定存档的会话录制文件的文件 ID 和存档时间。
-
在备份中找到会话录制文件,使用会话录制播放器属性中指定的文件 ID。每个会话录制的文件名为
i_<FileID>.icl,其中 FileID 是会话录制文件的 ID。 -
将您的会话录制文件从备份复制到存档文件的还原目录。要确定存档文件的还原目录,请执行以下步骤:
-
从“开始”菜单中,选择“开始”>“所有程序”>“Citrix®”>“会话录制服务器属性”。
-
在“会话录制服务器属性”中,选择“存储”选项卡。当前还原目录显示在“存档文件的还原目录”字段中。
-
通过使用 ICLDB IMPORT 命令还原会话录制文件
-
以本地管理员身份登录到安装了会话录制服务器的服务器。
-
启动命令提示符。
-
从当前工作目录更改到会话录制服务器安装路径的 Bin 目录 (
<Session Recording server installation path>\Bin)。 -
或者:
-
运行
ICLDB IMPORT /LISTFILES /RECURSIVE /L <directory>命令,其中 directory 是一个或多个目录的名称,以空格分隔,包含会话录制文件。输入 Y 确认导入。 -
运行
ICLDB IMPORT /LISTFILES /L <file>命令,其中 file 是一个或多个会话录制文件的名称,以空格分隔。可以使用通配符指定会话录制文件。输入 Y 确认导入。
-
重新定位会话录制文件
您可以将会话录制文件移动到不同的存储路径,以实现负载平衡或其他目的。为确保文件仍可播放,您必须将会话录制数据库中的文件路径更新为新路径。为此,请使用 ICLDB IMPORT 命令。要加快导入过程,请将 RELOCATE 参数附加到 ICLDB IMPORT 命令。
注意:
RELOCATE 参数是可选的。如果没有 RELOCATE 参数,ICLDB IMPORT 命令会完整解析会话录制文件,这需要时间。使用 RELOCATE 参数,ICLDB IMPORT 命令只需定位会话录制文件的数据库记录并直接更新其文件路径。
以下步骤说明如何使用 RELOCATE 参数将会话录制数据库中的文件路径更新为新路径。
-
根据需要将会话录制文件移动到不同的存储路径。
-
以本地管理员身份登录到安装了会话录制服务器的服务器。
-
启动命令提示符。
-
将当前工作目录更改为会话录制服务器安装路径的 Bin 目录 (
<Session Recording server installation path>\Bin)。 -
执行以下任一操作:
-
运行
ICLDB IMPORT /LISTFILES /RECURSIVE /RELOCATE /L <directory>命令,其中 directory 是一个或多个目录的名称,用空格分隔,包含会话录制文件。输入 Y 确认导入。 -
运行
ICLDB IMPORT /LISTFILES /RELOCATE /L <file>命令,其中 file 是一个或多个会话录制文件的名称,用空格分隔。可以使用通配符指定会话录制文件。输入 Y 确认导入。
-
注意:
- RELOCATE 参数假定会话录制数据库中已存在会话录制文件的记录。
- 会话录制文件在移动之前必须是可播放的。否则,RELOCATE 参数将不起作用。
- 会话录制文件的新存储路径必须可由会话录制服务器识别。您可以在会话录制服务器属性的存储选项卡上尝试这些路径。
关闭无响应或休眠的实时录制
默认情况下,如果 24 小时内没有新数据写入录制文件,则实时录制被视为无响应或休眠。您可以在会话录制服务器属性的存储选项卡上配置此时间阈值,以便在此阈值超出时自动关闭无响应或休眠的实时录制。您可以设置的最小值为 12(小时)。

您还可以使用 ICLDB DORMANT 命令手动关闭无响应或休眠的实时录制,例如:
ICLDB DORMANT [/DAYS:<days> | /HOURS:<hours> | /MINUTES:<minutes> | /FILEID:<id>] [/LISTFILES] [/CLOSEFILES] [/L] [/F] [/S] [/?]
<!--NeedCopy-->
FILEID 参数允许您指定目标会话录制文件,而 CLOSEFILES 参数允许您手动关闭您指定的无响应或休眠的实时录制。
提示:
您可以在会话录制播放器 (Windows) 中检查会话录制文件的 ID。录制文件名也可以用作文件 ID。