XenApp和XenDesktop

数据库

XenApp或XenDesktop站点使用三个SQL Server数据库:

  • 站点:(也称为站点配置)存储正在运行的站点配置,以及当前会话状态和连接信息。
  • 配置日志记录:(也称为日志记录)存储有关站点配置更改和管理活动的信息。启用配置日志记录功能(默认情况下启用)时将使用此数据库。
  • 监视:存储主任使用的数据,如会话和连接信息。

每个交付控制器都将与站点数据库进行通信。需要在控制器与数据库之间执行Windows身份验证。拔出或关闭一个控制器不会对站点中的其他控制器产生影响。但这也意味着站点数据库会形成单点故障。如果数据库服务器出现故障,现有连接继续正常运行,直到用户注销或断开连接。有关站点数据库变得不可用时的连接行为的信息,请参阅本地主机缓存

将交付控制器添加到站点时,请务必将该计算机的登录凭据添加到用于实现高可用性的任何副本SQL Server中。

Citrix建议您定期备份数据库,以便在数据库服务器出现故障时可以通过备份进行还原。各个数据库的备份策略可以有所不同。相关说明,请参阅CTX135207

如果站点包含多个区域,请将站点数据库保留在主要区域内。各区域内的控制器与该数据库通信。

高可用性

可以考虑采取几种高可用性解决方案以确保实现自动故障转移:

  • AlwaysOn可用性组(包括基本可用性组):这是SQL Server 2012中引入的具有高可用性和灾难恢复能力的企业级解决方案,此方案可以使您最大程度地提高一个或多个数据库的可用性。AlwaysOn可用性组要求SQL Server实例必须驻留在Windows Server故障转移群集(WSFC)节点上。有关详细信息,请参阅https://docs.microsoft.com/en-us/sql/database-engine/availability-groups/windows/always-on-availability-groups-sql-server?redirectedfrom=MSDN&view=sql-server-ver15
  • SQL Server数据库镜像:通过数据库镜像可以确保一旦与活动数据库服务器失去联系,可以在几秒钟内快速实现自动故障转移,因此用户通常不会受到影响。此方法比其他解决方案更为昂贵,因为在每台数据库服务器上必须使用完整的SQL Server许可证;在镜像环境中不能使用SQL Server Express版本。
  • SQL群集化:可以使用微软的SQL群集化技术,允许一台服务器自动接管另一台故障服务器的任务和职责。但是,该解决方案的设置更为复杂,自动故障转移过程通常比其他备选方案(如SQL镜像)更慢。
  • 使用虚拟机管理程序的高可用性功能:通过此方法,可以将数据库作为虚拟机进行部署,并使用虚拟机管理程序的高可用性功能。此解决方案的成本比镜像方法要低,因为它使用的是现有虚拟机管理程序软件,您也可以使用SQL Server Express版本。但是,其自动故障转移过程比较慢,因为需要花时间为数据库启动新计算机,这样可能会导致为用户提供的服务中断。

通过本地主机缓存功能,用户可以连接以及重新连接到应用程序和桌面,即使在站点数据库不可用时也能连接,补充了SQL Server高可用性最佳做法。有关详细信息,请参阅本地主机缓存

如果站点中的所有控制器均出现故障,可以将VDA配置为在高可用性模式下运行,这样用户便可以继续访问并使用其桌面和应用程序。在高可用性模式下,VDA将接受来自用户的直接ICA连接,而不是由控制器代理的连接。仅当无法与所有控制器进行通信(极少出现)时才使用此功能。它不能代替其他高可用性解决方案。有关详细信息,请参阅CTX 127564

注意

在SQL群集或SQL镜像安装中,不支持在节点上安装控制器。

安装数据库软件

默认情况下,安装首个交付控制器时,如果在该服务器上未检测到另一个SQL Server实例,系统将安装SQL Server Express版本。对于概念验证或试验部署,该默认操作通常足以解决问题。但是,SQL Server Express不支持微软高可用性功能。

默认安装程序使用默认Windows服务帐户和权限。请参阅Microsoft 文档了解关于这些默认设置的详细信息,其中包括如何向 sysadmin 角色添加 Windows 服务帐户。Controller 使用此配置中的网络服务帐户。Controller 不需要使用任何其他 SQL Server 角色或权限。

如果需要,您可以为数据库实例选择隐藏实例。在工作室中配置数据库的地址时,请输入实例的静态端口号,而不是它的名称。请参阅Microsoft 文档了解关于隐藏 SQL Server 数据库引擎实例的详细信息。

对于大多数生产部署以及任何使用微软高可用性功能的部署,请使用受支持的非表达版本的SQL服务器,且安装此数据库的计算机应不同于安装首个控制器的服务器。系统要求一文列出了受支持的SQL Server版本。数据库可以位于一台或多台计算机上。

请务必在创建站点之前安装SQL Server软件。无须创建数据库,但是,如果确实已创建数据库,此数据库必须为空。同时,建议配置微软高可用性技术。

使用Windows更新保持SQL Server处于最新状态。

通过站点创建向导设置数据库

在站点创建向导中的数据库页面上指定数据库名称和地址(位置)。请参阅数据库地址格式。为避免主任查询监控服务时存在潜在错误,请勿在监视数据库的名称中使用空格。

数据库页面提供两个用于设置数据库的选项:自动或使用脚本。通常,如果您(工作室用户和Citrix管理员)拥有所需的数据库权限,可以使用自动选项,请参阅下面的“设置数据所需的权限”部分。

创建站点后,您可以稍后更改配置日志记录和监视数据库的位置。请参阅更改数据库位置

要将站点配置为使用镜像数据库,请完成以下操作,然后继续执行自动设置过程或脚本设置过程。

  1. 在两个服务器(A和B)上安装SQL Server软件。
  2. 在服务器上,创建要作为主体数据库的数据库。在服务器一个上备份此数据库,然后将其复制到服务器B。
  3. 在服务器B上,还原备份文件。
  4. 在服务器一个上启动镜像。

要在创建站点后验证镜像,请运行PowerShell cmdletget-configdbconnection,以确保已在连接字符串中将故障转移伙伴设置为镜像。

如果以后在镜像的数据库环境中添加,移动或删除交付控制器,请参阅“交付控制器”一文。

自动设置

如果拥有所需的数据库权限,请在站点创建向导的数据库页面选择“在工作室中创建和设置数据库”选项,然后提供主体数据库的名称和地址。

如果指定的地址已存在数据库,此数据库必须为空。如果指定的地址没有数据库,系统会提示您未找到数据库,然后询问是否为您创建数据库。确认该操作后,工作室将自动创建数据库,然后为主体数据库和复制数据库应用初始化脚本。

脚本设置

如果您没有所需的数据库权限,必须在具有这些权限的人员(如数据库管理员)的帮助下进行操作。以下是操作步骤:

  1. 在站点创建向导中,选择生成脚本选项。此操作将生成六个脚本:三个数据库各具有两个脚本(一个用于对应的主体数据库,另一个用于对应的复制数据库)。可以指定存储这些脚本的位置。
  2. 将这些脚本提供给数据库管理员。站点创建向导此时自动停止;稍后您返回继续创建站点时会收到提示。

然后,数据库管理员创建数据库。每个数据库必须具有以下特征:

  • 使用结尾为“_CI_AS_KS”的排序规则。Citrix 建议使用结尾为“_100_CI_AS_KS”的排序规则。
  • 为获得最佳性能,请启用SQL Server读取提交快照。有关详细信息,请参阅CTX 137161
  • 如果需要,应配置高可用性功能。
  • 要配置镜像,请首先将数据库设置为使用完整恢复模式(默认情况下为简单模式)。将主体数据库备份到某个文件中,然后将其复制到镜像服务器。在镜像数据库上,将备份文件还原到镜像服务器。然后,在主体服务器上启动镜像。

数据库管理员使用SQLCMD命令行实用程序或采用SQLCMD模式的SQL Server Management Studio在高可用性SQL Server数据库实例(如果配置了高可用性)上运行每个xxx_Replica。sql脚本,然后在主体sql Server数据库实例上运行每个xxx_Principal。sql脚本。有关SQLCMD的详细信息,请参微软阅文档。

所有脚本成功完成后,数据库管理员向Citrix管理员提供三个主体数据库地址。

在工作室中,系统会提示您继续创建站点,并返回数据库页面。输入地址。如果无法联系托管数据库的任何服务器,系统会显示错误消息。

设置数据库所需的权限

您必须是本地管理员或域用户才能创建和初始化数据库(或更改数据库位置)。您还必须具有某些SQL Server权限。以下权限可以显式配置或通过活动目录组成员身份获取。如果您的工作室用户凭据不包括这些权限,系统会提示您使用SQL Server用户凭据。

操作 用途 服务器角色 数据库角色
创建数据库 创建合适的空数据库 dbcreator
创建架构 创建所有服务特定的架构,并将第一个控制器添加到站点 securityadmin * db_owner
添加控制器 将控制器(除第一个外)添加到站点 securityadmin * db_owner
添加控制器(镜像服务器) 将控制器登录信息添加到当前位于镜像数据库的镜像角色中的数据库服务器 securityadmin *
删除控制器 从站点中删除控制器 ** db_owner
更新架构 应用架构更新或修补程序 db_owner

*虽然在技术层面上的限制更加严格,但实际上应将securityadmin服务器角色视为等同于sysadmin服务器角色。

* *从站点中删除控制器(直接通过桌面的工作室,或者使用桌面工作室或SDK生成的脚本)时,控制器到数据库服务器的登录信息不会被删除。这是为了避免可能删除同一计算机上非XenDesktop服务所使用的登录信息。如果不再需要,则必须手动删除登录信息,这需要具有securityadmin服务器角色成员身份。

使用工作室执行这些操作时,用户帐户必须属于sysadmin服务器角色的成员。

数据库地址格式

可以使用以下格式之一指定数据库地址:

  • ServerName
  • ServerName \ \都
  • ServerName, PortNumber

对于AlwaysOn可用性组,请在位置字段指定组的侦听器。

更改数据库位置

在创建站点后,您可以更改配置日志记录和监视数据库的位置。(您不能更改站点数据库的位置。)当您更改某个数据库的位置时:

  • 以前数据库中的数据不会导入到新数据库中。
  • 检索日志时,不能合并来自两个数据库的日志。
  • 新数据库中的第一条日志指示数据库发生更改,但不会标识以前的数据库。

可以在启用强制日志记录功能时更改配置日志记录数据库的位置。

要更改数据库的位置,请执行以下操作:

  1. 确保您希望数据库所在的服务器上已安装受支持版本的Microsoft SQL Server。根据需要设置高可用性功能。
  2. 在工作室导航窗格中选择配置
  3. 选择要为其指定新位置的数据库,然后在操作窗格中选择更改数据库
  4. 指定新位置和数据库名称。
  5. 如果希望工作室创建数据库,并且您具有相应的权限,请单击确定。出现提示时,请单击确定工作室,然后会自动创建数据库。工作室会尝试使用您的凭据访问数据库。如果该操作失败,系统将提示您输入数据库用户的凭据。然后,工作室会将数据库架构上载到数据库。凭据仅在数据库创建期间保留。
  6. 如果不希望工作室创建数据库,或者您没有足够的权限,请单击生成脚本。生成的脚本中包括用于手动创建数据库和镜像数据库(如果需要)的指令。上载架构前,请确保数据库为空,且至少有一个用户有权访问和更改该数据库。

相关详细信息

数据库