数据库
Citrix虚拟应用程序或Citrix虚拟桌面站点使用三个SQL Server数据库:
- 网站:(也称为站点配置)存储正在运行的站点配置,以及当前会话状态和连接信息。
- 配置日志记录:(也称为日志记录)存储有关站点配置更改和管理活动的信息。当启用配置日志记录功能(默认值=已启用)时,将使用此数据库。
- 监控:存储Director使用的数据,例如会话和连接信息。
每个交付控制器与站点数据库通信。Controller和数据库之间需要Windows身份验证。在不影响现场其他控制器的情况下,可以拔掉或关闭控制器。然而,这意味着站点数据库形成了一个单故障点。如果数据库服务器出现故障,现有连接将继续运行,直到用户注销或断开连接。有关站点数据库不可用时的连接行为的信息,请参见本地主机缓存.
Citrix建议您定期备份数据库,以便在数据库服务器出现故障时可以从备份中进行恢复。每个数据库的备份策略可能不同。说明,请参阅CTX135207.
如果站点包含多个区域,请确保主区域始终包含站点数据库。每个区域的控制器都与那个数据库通信。
高可用性
为了确保自动故障转移,需要考虑几个高可用性解决方案:
- AlwaysOn可用性组(包括基本可用性组):SQL Server 2012中引入的这一企业级高可用性和灾难恢复解决方案使您能够最大限度地提高一个或多个数据库的可用性。AlwaysOn可用性组要求SQL Server实例驻留在Windows Server故障转移群集(WSFC)节点上。有关详细信息,请参阅Windows Server Failover集群与SQL Server.
- SQL Server数据库镜像:镜像数据库可确保,如果丢失活动数据库服务器,自动故障切换过程会在几秒钟内发生,因此用户通常不会受到影响。此方法比其他解决方案更昂贵,因为每个数据库服务器都需要完整的SQL Server许可证。不能在镜像环境中使用SQL Server Express edition。
- SQL群集:可以使用Microsoft SQL集群技术自动允许一台服务器接管另一台服务器的任务和职责。然而,设置这个解决方案更加复杂,自动故障转移过程通常比SQL镜像等替代方法慢。
- 使用管理程序的高可用性特性:使用这种方法,可以将数据库部署为虚拟机,并使用管理程序的高可用性特性。此解决方案比镜像更便宜,因为它使用您现有的管理程序软件,您也可以使用SQL Server Express版本。但是,自动故障转移过程较慢,因为为数据库启动新机器可能需要一些时间,这可能会中断对用户的服务。
本地主机缓存功能补充了SQL Server高可用性最佳实践。本地主机缓存允许用户连接并重新连接到应用程序和桌面,即使站点数据库不可用。有关详细信息,请参阅本地主机缓存.
如果站点中的所有控制器都出现故障,您可以将VDA配置为在高可用性模式下运行,这允许用户继续访问其桌面和应用程序。在高可用性模式下,VDA接受来自用户的直接ICA连接,而不是由控制器代理的连接。仅在与所有控制器通信失败的罕见情况下使用此功能。该功能不是其他高可用性解决方案的替代方案。有关详细信息,请参阅CTX 127564.
不支持在SQL集群或SQL镜像安装中的节点上安装Controller。
安装数据库软件
默认情况下,当您安装第一个Delivery Controller时,如果在该服务器上未检测到另一个SQL Server实例,则安装SQL Server Express版本。对于概念验证或试点部署来说,默认操作通常就足够了。但是,SQL Server Express不支持微软的高可用性特性。
默认安装使用默认的Windows服务帐户和权限。有关这些默认设置的详细信息,包括向sysadmin角色添加Windows服务帐户,请参阅Microsoft文档。控制器在此配置中使用网络服务帐户。控制器不需要任何其他SQL Server角色或权限。
如有必要,您可以选择隐藏的实例用于数据库实例。在Studio中配置数据库地址时,输入实例的静态端口号,而不是它的名称。有关隐藏SQL Server数据库引擎实例的详细信息,请参阅Microsoft文档。
对于大多数生产部署,以及任何使用Microsoft高可用性特性的部署,我们建议只使用受支持的非express版本的SQL Server。在安装第一个控制器的服务器以外的其他机器上安装SQL Server。系统需求列出支持的SQL Server版本。数据库可以驻留在一台或多台计算机上。
创建站点前,请确保已安装SQL Server软件。您不必创建数据库,但如果您创建了数据库,它必须是空的。建议配置Microsoft高可用性技术。
使用Windows Update更新SQL Server。
从站点创建向导设置数据库
的数据库名称和地址(位置)数据库网站创建向导中的页面。(见数据库地址格式.)为避免Director查询Monitor Service时出现错误,请不要在监控数据库名称中使用空格。
这个数据库Page提供了两种设置数据库的选项:自动和使用脚本。通常,如果您(Studio用户和Citrix管理员)拥有所需的数据库特权,则可以使用automatic选项。(见设置数据库所需的权限.)
创建站点后,您可以稍后更改配置日志记录和监视数据库的位置。看见更改数据库的位置.
要将站点配置为使用镜像数据库,请完成以下操作,然后继续进行自动或脚本化的设置过程。
- 在服务器A和服务器B上安装SQL Server软件。
- 在服务器A上,创建要用作主体的数据库。在服务器A上备份数据库,然后复制到服务器B。
- 在服务器B上恢复备份文件。
- 在服务器A上启动镜像。
要在创建站点后验证镜像,请运行PowerShell cmdlet获取configdbconnection
,以确保已在连接到镜像的字符串中设置故障转移合作伙伴。
如果稍后在镜像数据库环境中添加、移动或删除交付控制器,请参见交付控制器.
自动设置
如果您具有所需的数据库权限,请选择从Studio创建和设置数据库在数据库页面的站点创建向导。然后提供主要数据库的名称和地址。
如果指定的地址存在数据库,则该数据库必须为空。如果指定地址不存在数据库,系统会通知您找不到数据库,然后询问您是否希望为您创建数据库。确认该操作后,Studio会自动创建数据库,然后为主体数据库和副本数据库应用初始化脚本。
脚本设置
如果您没有所需的数据库权限,请向拥有权限的人(如数据库管理员)请求帮助。顺序如下:
上数据库页中,选择生成手动设置的脚本. 此操作为以下主体数据库和副本数据库生成以下三种类型的脚本:站点数据库、监视数据库和日志数据库。
- 名称中包含“SysAdmin”的脚本.创建数据库和Delivery Controller登录的脚本。这些任务需要securityadmin权限。
- 名称中包含“DbOwner”的脚本. 在数据库中创建用户角色、添加登录名,然后创建数据库架构的脚本。这些任务需要
db_owner
的权利。 - 名称中包含“Mixed”的脚本. 一个脚本中的所有任务,无论所需权限如何。
您可以指示将脚本存储在何处。
注:
在企业环境中,数据库设置包括脚本,可能由具有不同角色(权限)的不同团队处理:
安全管理员
或db_owner
. 如果适用,您首先可以使用由管理员运行的“SysAdmin”脚本安全管理员
角色,然后是由管理员运行的“DbOwner”脚本db_owner
的权利。要生成这些脚本,还可以使用PowerShell。有关详细信息,请参见首选数据库权限脚本.将这些脚本交给数据库管理员。站点创建向导在此自动停止。稍后返回时将提示您继续创建站点。
然后,数据库管理员创建数据库。每个数据库必须具有以下特征:
- 使用以。结尾的排序规则
_CI_AS_KS
.我们建议使用以。结尾的排序规则_100_CI_AS_KS
. - 为了获得最佳性能,请启用SQL Server Read-Committed快照。有关详细信息,请参见CTX 137161.
- 配置的高可用性功能(如果适用)。
- 要配置镜像,首先将数据库设置为使用完整恢复模型(简单模型是默认的)。将主体数据库备份到一个文件,并将其复制到镜像服务器。然后在镜像服务器上恢复备份文件。最后,在主体服务器上启动镜像。
数据库管理员使用SQLCMD命令行工具或SQL Server Management Studio以SQLCMD模式执行以下操作:
- 运行每一个
xxx_Replica.sql
高可用性SQL Server数据库实例上的脚本(如果配置了高可用性) - 运行每一个
xxx \ _Principal.sql
主体SQL Server数据库实例上的脚本。
有关SQLCMD的详细信息,请参阅Microsoft文档。
当所有脚本成功完成时,数据库管理员将三个主要数据库地址交给Citrix管理员。
Studio提示您继续创建站点。您被返回到数据库页输入地址。如果无法联系任何托管数据库的服务器,则会显示错误消息。
设置数据库所需的权限
必须是本地管理员和域用户才能创建和初始化数据库(或更改数据库位置)。您还必须具有某些SQL Server权限。以下权限可以由Active Directory组成员显式配置或获得。如果Studio用户凭据不包括这些权限,则会提示您输入SQL Server用户凭据。
操作 | 目的 | 服务器的作用 | 数据库的作用 |
---|---|---|---|
创建一个数据库 | 创建合适的空数据库 | 数据库创建者 |
|
创建一个模式 | 创建所有特定于服务的架构,并将第一个控制器添加到站点 | 安全管理员 * |
db_owner |
添加控制器 | 将控制器(第一个控制器除外)添加到站点 | 安全管理员 * |
db_owner |
添加控制器(镜像服务器) | 将控制器登录添加到当前处于镜像数据库镜像角色的数据库服务器 | 安全管理员 * |
|
卸下控制器 | 从站点中删除控制器 | ** | db_owner |
更新模式 | 应用模式更新或修补程序 | db_owner |
*虽然在技术上更严格,但在实践中,你可以处理安全管理员
服务器角色,相当于系统管理员
服务器角色。
**当通过Studio或使用Studio或SDK生成的脚本从站点中删除控制器时,登录到数据库服务器的控制器不会被删除。这是为了避免在同一台机器上删除除该Citrix产品之外的其他服务正在使用的登录。如果不再需要登录,则必须手动删除登录。这个动作需要安全管理员
服务器角色成员资格。
当使用Studio执行这些操作时,Studio用户必须具有显式地属于适当服务器角色的数据库服务器帐户,或者能够提供帐户的凭据。
首选数据库权限脚本
在企业环境中,数据库设置包括必须由具有不同角色(权限)的不同团队处理的脚本:安全管理员
或db_owner
.
使用PowerShell,您可以指定首选数据库权限。指定非默认值会导致创建单独的脚本。一个脚本包含需要安全管理员
的角色。另一个脚本只需要db_owner
权限和可由Citrix管理员运行,无需联系数据库管理员。
在get-*DBSchema
cmdlet-DatabaseRights
选项具有以下有效值:
沙特阿拉伯
:生成创建数据库和Delivery Controller登录的脚本。这些任务需要安全管理员
的权利。DBO
:生成一个脚本,该脚本在数据库中创建用户角色,添加登录名,然后创建数据库架构。这些任务需要db_owner
的权利。混合
:(默认)一个脚本中的所有任务,而不考虑需要的权限。
有关更多信息,请参见cmdlet帮助。
数据库地址格式
您可以使用以下形式之一指定数据库地址:
ServerName
ServerName \都
ServerName, PortNumber
对于AlwaysOn可用性组,请在位置字段中指定组的侦听器。
更改数据库的位置
创建站点后,可以更改配置日志记录和监视数据库的位置。(不能更改站点数据库的位置。)更改数据库位置时:
- 以前数据库中的数据不会导入到新数据库中。
- 在检索日志时,不能从两个数据库聚合日志。
- 新数据库中的第一个日志条目表明发生了数据库更改,但它不能标识以前的数据库。
当启用强制日志记录时,不能更改配置日志记录数据库的位置。
更改数据库的位置。
- 确保要驻留数据库的服务器上安装了受支持的Microsoft SQL Server版本。根据需要设置高可用性特性。
- 选择配置在Studio导航窗格中。
- 选择要为其指定新位置的数据库,然后选择更改数据库在行动窗格。
- 指定新位置和数据库名称。
- 如果您希望Studio创建数据库,并且您有适当的权限,请单击好啊.当出现提示时,单击好啊,然后Studio自动创建数据库。Studio尝试使用您的凭据访问数据库。如果失败,系统将提示您输入数据库用户的凭据。Studio然后将数据库架构上载到数据库。凭据仅在数据库创建时间段内保留。
- 如果不希望Studio创建数据库,或者您没有足够的权限,请单击生成脚本.生成的脚本包括手动创建数据库和镜像数据库(如果需要的话)的说明。上传模式前,请确保数据库为空,且至少有一个用户可以访问和修改数据库。
更多信息
- 数据库大小调整工具.
- 调整站点数据库的大小和配置连接字符串使用SQL Server高可用性解决方案时。