[排错]Citrix Session Recording集成SQLServer AlwaysOn切换失败

有的用户非要对VDI项目中的数据库实施高可用,尽管我并不推荐,但随他们去吧!其中DDC、PVS、Session Recording(以下简称SR)均支持AlwaysOn集群。官方文档的说法是两种方法均可:

1、要安装具有数据库高可用性的 Session Recording,请执行以下操作之一:
请先安装 Session Recording Server 组件,然后再为所创建的数据库配置数据库高可用性。 可以在将数据库配置为安装在预先配置的 SQL Server 实例上的情况下安装 Session Recording Administration 组件,然后为所创建的数据库配置数据库高可用性。
对于 AlwaysOn 高可用性组和群集化解决方案,必须在 HKEY_LOCAL_MACHINE\SOFTWARE\Citrix\SmartAuditor\Server\SmAudDatabaseInstance 中将 SQL Server 实例名称手动更改为高可用性侦听器或 SQL Server 网络的名称。

2、先为空数据库配置数据库高可用性,然后再安装 Session Recording Administration 组件。 可以在预期的主 SQL Server 实例中创建两个空数据库作为 Session Recording 数据库和管理员日志记录数据库并配置高可用性。然后在安装 Session Recording Server 组件时输入 SQL Server 实例名称:
要使用 AlwaysOn 可用性组解决方案,请输入可用性组侦听器的名称。
第1种方法可用于后期数据库由单点到集群的改造
计算机账号的写法推荐是 domain\computerName$

我们使用第2种方式,预先统一配置好DDC/PVS/SR的数据库,SR中的第一个坑是必须配置两个数据库,一个用于SR server,另一个用于SR server LOG,不可共用,否则安装过程报“数据库已经在使用中”的错误;

安装成功后,连接到SR服务器,证书的配置省略;切换后台数据库后,重新连接SR服务器,提示报错,在eventvwr中查看报错如下:

用户是个计算机账号

于是想到去数据库里看看这个账号的情况:

对比发现FADB2上根本没有这个计算机账号,DDC创建数据库时是两边自动创建FADDC$账号的,
但SR却只创建了一个!

那就尝试手工在FADB2上创建计算机账号吧,直接添加是无效的,需要借助SQL语句:

CREATE LOGIN [CITRIX\FASR1$] FROM WINDOWS;

变量解释:[domain\computerName$]

成功执行后再刷新下左侧就有了,再对照FADB1中的账号去配置FADB2上的登录名权限即可!
单纯创建计算机账号而没有添加足够的权限,SR连接还是会报错的。

回首过去,SR在连接数据库时一直都有坑,没想到现在还没有完全解决。