高级概念
感谢您提供反馈

这篇文章已经过机器翻译.放弃

使用 SQL Server 高可用性解决方案时更新数据库连接字符串

Citrix 提供了几个 PowerShell 脚本,这些脚本可以在使用 SQL Server 高可用性数据库解决方案(例如 Always On 和镜像)时更新 XenApp 和 XenDesktop 数据库连接字符串。

这些使用 XenApp 和 XenDesktop PowerShell API 的脚本包括:

  • DBConnectionStringFuncs.ps1:执行实际工作的核心脚本。此脚本包含其他脚本使用的常用函数。
  • Change_XD_Failover_Partner_v1.ps1:更新(添加、更改或删除)故障转移合作伙伴。此脚本提示输入每个数据库的故障转移伙伴位置 (FQDN)。(如果提供空的故障转移伙伴,则会删除故障转移伙伴。您也可以使用 ClearPartner 选项删除合作伙伴。) 不要将故障转移伙伴设置为与主体数据库服务器相同的位置。
  • Change_XD_To_ConnectionString.ps1:使用提供的连接字符串更新到数据库的连接字符串。此脚本可确保某些 Citrix 服务已启动并正在运行,然后在站点中的所有 Controller 上以正确的顺序更新这些服务。将每个数据库的连接字符串信息用引号括起来。
  • change_xd_to_multisubnetFailover.ps1:切换 m ultiSubnetFailover=True的添加和删除。如果您使用始终在可用性组中,Microsoft 建议连接字符串包括 MultiSubnetFailover=true。此选项可在发生高可用性事件时加快恢复速度,建议在单子网和多子网环境中使用。运行此脚本一次以添加选项。如果必须删除该选项,请使用 Change_XD_To_ConnectionString.ps1 再次运行脚本并提供不带设置的字符串。
  • Change_XD_To_Null.ps1: 重置本地主机上的所有连接字符串,因为出现了问题。通过将连接字符串重置为 null,此脚本将控制器置于“初始”状态。如果您在运行此脚本后运行 Studio,系统会询问您是要创建站点还是加入现有站点。如果出现问题并且需要重置,这很有用。重置后,您可以再次尝试使用 Change_XD_To_ConnectionString.ps1 设置连接字符串。

也可以手动更新数据库连接字符串;请参阅手动 更新字符串。要下载 PowerShell 脚本,请参阅 过程 部分。

重要:

本文是在 XenDesktop 7.6 上编写和测试脚本的。本文档不再使用更高版本的 Citrix Virtual Apps and Desktops 进行维护或测试。

要求和注意事项

  • 您必须是完全站点管理员才能运行脚本。
  • 在一个控制器的 PowerShell 窗口中运行脚本。PowerShell v3 是必需的。
  • 必须安装 XenApp 和 XenDesktop 核心组件,并且站点必须启动并运行。
  • 在运行脚本之前,请禁用强制配置日志记录。
  • .NET 4.5 及更高版本支持 MultiSubnetFailover 选项。但是,Studio 在 Windows 7 或 2008 R2 计算机上使用的 MMC 包含早期的 .NET 版本,因此当您在 Studio 导航窗格中选择配置时,您可能会看到错误“不支持关键字:”multisubnetfailover。在这种情况下,请按如下方式修补或更新:

  • 对于 .NET 3.5 SP1,使用修补程序 http://support.microsoft.com/kb/2654347 进行修补。
  • 对于 .NET 4.0,建议更新至 4.0.2. 4.0.3:http://support.microsoft.com/kb/2600211

然后,使用 Change_XD_To_MultiSubnetFailover.ps1 脚本使用此选项更新数据库连接字符串。

过程

  1. Citrix ShareFile 下载包含脚本的 zip 文件
  2. 解压文件。
  3. 确保 DBConnectionStringFuncs.ps1 与您运行的脚本位于同一文件夹中,因为您运行的脚本使用 DBConnectionStringFuncs.ps1 中的函数。
  4. 在控制器上运行脚本。

如果要将站点设置为多子网故障转移,则只需运行 Change_XD_To_MultiSubnetFailover.ps1 脚本。(请记住:确保 DBConnectionStringFuncs.ps1 脚本位于同一文件夹中。)

提示:

  • 更新连接字符串时,通常会看到一条消息,指示“Server=SQLxxx\\CITRIX\\...”正在更改为 Data Source=SQLxxx\\CITRIX\\...。术语“服务器”和“数据源”是同义词。
  • 如果要操作连接字符串,请查看 Change\_XD\_ 脚本如何使用 DBConnectionStringFuncs.ps1 中的函数。

手动更新字符串

要手动更新字符串,请运行 XenApp 和 XenDesktop PowerShell cmdlet。

步骤 1. 将 SQL 数据库移动到不同的 SQL Server,并分配正确的权限

  1. 备份原始 SQL Server 上的数据库,并在新的 SQL Server 上还原它们。
  2. SQL Management Studio > 安全 > 登录中,添加 Delivery Controller 计算机帐户。例如,CORP\DDC01$。
  3. 添加 SQL 登录时,在“用户映射”页面上,单击三个 Citrix 数据库:站点数据库、监视数据库和日志记录数据库。
  4. 对于三个 Citrix 数据库中的每个数据库,将 Delivery Controller 计算机帐户添加到各种数据库角色。站点数据库的角色比日志和监视数据库多得多。
Site database - ADIdentitySchema_ROLE Site database - Analytics_ROLE # for 7.8 and newer Site database - AppLibrarySchema_ROLE # for 7.8 and newer Site database - chr_Broker Site database - chr_Controller Site database - ConfigLoggingSiteSchema_ROLE Site database - ConfigurationSchema_ROLE Site database - DAS_ROLE Site database - DesktopUpdateManagerSchema_ROLE Site database - EnvTestServiceSchema_ROLE Site database - HostingUnitServiceSchema_ROLE Site database - Monitor_ROLE Site database - OrchestrationSchema_ROLE # for 7.11 and newer Site database - public Site database - StorefrontSchema_ROLE # for 7.8 and newer Site database - TrustSchema_ROLE # for 7.11 and newer Monitoring database - Monitor_ROLE Monitoring database - public Logging database - ConfigLoggingSchema_ROLE Logging database - public

步骤 2. 检索现有的数据库连接(可选)

运行以下命令以查看现有的数据库连接字符串:

## Load the Citrix snap-ins asnp Citrix.* ## Get the current Delivery Controller database connections Get-ConfigDBConnection Get-AcctDBConnection Get-AnalyticsDBConnection # for 7.6 and newer Get-AppLibDBConnection # for 7.8 and newer Get-OrchDBConnection # for 7.11 and newer Get-TrustDBConnection # for 7.11 and newer Get-HypDBConnection Get-ProvDBConnection Get-BrokerDBConnection Get-EnvTestDBConnection Get-SfDBConnection Get-MonitorDBConnection Get-MonitorDBConnection -DataStore Monitor Get-LogDBConnection Get-LogDBConnection -DataStore Logging Get-AdminDBConnection

步骤 3. 删除现有的数据库连接

Delivery Controller 上,以管理员身份打开 PowerShell 并运行以下命令。此过程将清除现有的数据库连接。

## Note the state of the log site Get-LogSite ## Load the Citrix snap-ins asnp Citrix.* ## Disable configuration logging for the XD site: Set-LogSite -State Disabled ## Clear the current Delivery Controller database connections ## Note: AdminDBConnection must be the last command Set-ConfigDBConnection -DBConnection $null -Force Set-AcctDBConnection -DBConnection $null -Force Set-AnalyticsDBConnection -DBConnection $null -Force # for 7.6 and newer Set-AppLibDBConnection -DBConnection $null -Force # for 7.8 and newer Set-OrchDBConnection -DBConnection $null -Force # for 7.11 and newer Set-TrustDBConnection -DBConnection $null -Force # for 7.11 and newer Set-HypDBConnection -DBConnection $null -Force Set-ProvDBConnection -DBConnection $null -Force Set-BrokerDBConnection -DBConnection $null Set-EnvTestDBConnection -DBConnection $null -Force Set-SfDBConnection -DBConnection $null -Force Set-MonitorDBConnection -DataStore Monitor -DBConnection $null -Force Set-MonitorDBConnection -DBConnection $null -Force Set-LogDBConnection -DataStore Logging -DBConnection $null -Force Set-LogDBConnection -DBConnection $null -Force Set-AdminDBConnection -DBConnection $null -Force

如果看到错误消息,则必须重新启动所有 Citrix 服务。

Get-Service Citrix* | Stop-Service -Force Get-Service Citrix* | Start-Service

重新启动 Citrix 服务后,如果仍然看到错误,则必须重新启动服务器。重新运行原始命令集以确认已正确移除现有连接。

以下 cmdlet 必须返回空输出:

## Load the Citrix snap-ins asnp Citrix.* ## Get the current Delivery Controller database connections Get-ConfigDBConnection Get-AcctDBConnection Get-AnalyticsDBConnection # for 7.6 and newer Get-AppLibDBConnection # for 7.8 and newer Get-OrchDBConnection # for 7.11 and newer Get-TrustDBConnection # for 7.11 and newer Get-HypDBConnection Get-ProvDBConnection Get-BrokerDBConnection Get-EnvTestDBConnection Get-SfDBConnection Get-MonitorDBConnection Get-LogDBConnection Get-AdminDBConnection

步骤 4. 指定新的数据库连接字符串

调整变量以匹配所需的连接字符串。

  • 对于独立SQL Server 连接字符串:Server=SQLServerName; Initial Catalog=DBName; Integrated Security=True
  • 对于数据库镜像连接字符串:Server=PrimarySQLServerName; Initial Catalog=DBName; Integrated Security=True; Failover Partner=SecondSQLServer
  • 对于始终保持高可用性:Server=ListenerName; Initial Catalog=XDdb; Integrated Security=True; MultiSubnetFailover=True

运行以下命令来设置新的连接字符串。

$ServerName = "<dbserver>" $SiteDBName = "<SiteDbName>" $LogDBName = "<LoggingDbName>" $MonitorDBName = "<MonitorDbName>" $csSite = "Server=$ServerName;Initial Catalog=$SiteDBName;Integrated Security=True" $csLogging = "Server=$ServerName;Initial Catalog=$LogDBName;Integrated Security=True" $csMonitoring = "Server=$ServerName;Initial Catalog=$MonitorDBName;Integrated Security=True" Set-AdminDBConnection -DBConnection $csSite Set-ConfigDBConnection -DBConnection $csSite Set-AcctDBConnection -DBConnection $csSite Set-AnalyticsDBConnection -DBConnection $csSite # for 7.6 and newer Set-HypDBConnection -DBConnection $csSite Set-ProvDBConnection -DBConnection $csSite Set-AppLibDBConnection –DBConnection $csSite # for 7.8 and newer Set-OrchDBConnection –DBConnection $csSite # for 7.11 and newer Set-TrustDBConnection –DBConnection $csSite # for 7.11 and newer Set-BrokerDBConnection -DBConnection $csSite Set-EnvTestDBConnection -DBConnection $csSite Set-SfDBConnection -DBConnection $csSite Set-LogDBConnection -DBConnection $csSite Set-LogDBConnection -DataStore Logging -DBConnection $null -force Set-LogDBConnection -DataStore Logging -DBConnection $csLogging Set-MonitorDBConnection -DBConnection $csSite Set-MonitorDBConnection -DataStore Monitor -DBConnection $null -force Set-MonitorDBConnection -DataStore Monitor -DBConnection $csMonitoring ## If necessary, enable configuration logging for the XD site: Set-LogSite -State Enabled

注意:

验证前面的所有Set-<service>DBConnection 命令都返回了“确定”的结果。如果这些命令的结果不是“**确定”,则可能需要启用日志记录或跟踪以确定连接失败的原因。

Set-LogDBConnection -DBConnection $nullSet-MonitorDBConnection -DBConnection $null 返回 DBUnconfigured 而非 OK

步骤 5. 测试新的数据库连接字符串

  1. 运行以下命令验证与数据库的连接。

    ## Load the Citrix snap-ins asnp citrix.* $ServerName = "<dbserver>" $SiteDBName = "<SiteDbName>" $LogDBName = "<LoggingDbName>" $MonitorDBName = "<MonitorDbName>" $csSite = "Server=$ServerName;Initial Catalog=$SiteDBName;Integrated Security=True" $csLogging = "Server=$ServerName;Initial Catalog=$LogDBName;Integrated Security=True" $csMonitoring = "Server=$ServerName;Initial Catalog=$MonitorDBName;Integrated Security=True" Test-AcctDBConnection -DBConnection $csSite Test-AdminDBConnection -DBConnection $csSite Test-AnalyticsDBConnection -DBConnection $csSite # for 7.6 and newer Test-AppLibDBConnection -DBConnection $csSite # for 7.8 and newer Test-BrokerDBConnection -DBConnection $csSite Test-ConfigDBConnection -DBConnection $csSite Test-EnvTestDBConnection -DBConnection $csSite Test-HypDBConnection -DBConnection $csSite Test-LogDBConnection -DBConnection $csSite Test-LogDBConnection -DataStore Logging -DBConnection $csLogging Test-MonitorDBConnection -DBConnection $csSite Test-MonitorDBConnection -Datastore Monitor -DBConnection $csMonitoring Test-OrchDBConnection -DBConnection $csSite # for 7.11 and newer Test-ProvDBConnection -DBConnection $csSite Test-SfDBConnection -DBConnection $csSite Test-TrustDBConnection -DBConnection $csSite # for 7.11 and newer
  2. 重新启动 Citrix Studio。

更多信息

本内容的正式版本为英文版。部分 Cloud Software Group 文档内容采用了机器翻译,仅供您参考。Cloud Software Group 无法控制机器翻译的内容,这些内容可能包含错误、不准确或不合适的语言。对于从英文原文翻译成任何其他语言的内容的准确性、可靠性、适用性或正确性,或者您的 Cloud Software Group 产品或服务沿用了任何机器翻译的内容,我们均不作任何明示或暗示的保证,并且适用的最终用户许可协议或服务条款或者与 Cloud Software Group 签订的任何其他协议(产品或服务与已进行机器翻译的任何文档保持一致)下的任何保证均不适用。对于因使用机器翻译的内容而引起的任何损害或问题,Cloud Software Group 不承担任何责任。
本服务可能包含由 Google 提供技术支持的翻译。Google 对这些翻译内容不做任何明示或暗示的保证,包括对准确性、可靠性的任何保证以及对适销性、特定用途的适用性和非侵权性的任何暗示保证。
使用 SQL Server 高可用性解决方案时更新数据库连接字符串