XenApp在启用配置日志记录后,如果需要查看,由两种方法,一种是通过AppCenter中的历史记录来查看。另外一种就是通过Powershell来查看。由于使用了中文版的数据库,结果在通过PS命令查看的时候,一直报错:
其实关键信息就在从字符串转换日期和/或时间时,转换失败。以下是详细信息:
1 2 3 4 5 6 7 8 9 10 | PS C:\> Get–CtxConfigurationLogReport –DataLinkPath C:\conn.udl Get–CtxConfigurationLogReport : An error has occurred. Details: An error occurred when calling the database–stored procedure for log entries. Please ensure that the logging database has been configured. 从字符串转换日期和/或时间时,转换失败。 所在位置 行:1 字符: 30 + Get–CtxConfigurationLogReport <<<< –DataLinkPath C:\conn.udl + CategoryInfo : InvalidOperation: (Provider=SQLOLE...=dbcn.xenme.lab:String) [Get–CtxConfigurationLogRep ort], InvalidOperationException + FullyQualifiedErrorId : GetConfigLogReport,Citrix.Common.Commands.GetConfigurationLogReportCmdlet |
而通过AppCenter访问正常:
同时,我们还发现,如果后台数据库使用英文的就不会出错,再联系到之前报时间转换错误。那么可以肯定的时,由于中文数据的时间格式和powershell cmdlet期望的时间格式不一致,导致出错。而AppCenter可以处理中文,Powershell却不行,基本可以确定,Powershell cmdlet使用了硬编码,导致时间格式转换失败。而联系英文数据库没有问题,最终发现,powershell cmdlet使用了en-us硬编码。
既然PS这边没法修改,那么只能在数据库这边动脑筋了,经过研究,后来发现可以修改数据库登录名的默认语言,所以,我们只要把对应的用户的登陆语言修改成english即可。或者修改整个服务器的locale也可以。但是由于可以直接修改登录用户的设置,那么这样可以保证了对数据库系统的最小影响。比如,我们可以单独为Powershell cmdlet查询配置日志记录建立一个数据库用户,并修改语言。
如上图,修改了默认语言后,再来运行PS命令,就可以了: