使用SQL Server高可用性解决方案时更新数据库连接字符串
Citrix在使用SQL Server高可用性数据库解决方案之类的情况下,提供了多种PowerShell脚本,可更新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.:切换添加和删除MultiSubnetFailover = true.如果您使用Always On Availability Groups, 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和desktop的最新版本中维护或测试。
要求和注意事项
- 您必须是完整站点管理员才能运行这些脚本。
- 运行脚本电源外壳窗口。需要安装PowerShell v3。
- 已安装XenApp和XenDesktop核心组件,站点已正常运行。
- 在运行脚本之前,请禁用强制性配置日志记录。
net 4.5及更高版本支持MultiSubnetFailover选项。然而,Studio在Windows 7或2008 R2机器上使用的MMC包含一个较早的。net版本,所以你可能会看到错误“关键字不支持:
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.
脚本使用此选项更新数据库连接字符串。
程序
- 从下面下载包含脚本的zip文件Citrix ShareFile.
- 解压文件。
- 确保DBConnectionStringFuncs。ps1与您运行的脚本位于同一个文件夹中,因为您运行的脚本使用DBConnectionStringFuncs.ps1中的函数。
- 在控制器上运行脚本。
如果要将站点设置为多子网故障转移,只需要运行Change_XD_To_MultiSubnetFailover。ps1脚本。(记住:确保DBConnectionStringFuncs。Ps1脚本在同一个文件夹中。)
小贴士:
- 当连接字符串被更新时,通常会看到这样的消息:
server = sqlxxx \\ citrix \\ ...
“正在改变为数据源= sqlxxx \\ citrix \\ ...
”。术语服务器和数据源是同义的。- 如果你想操作连接字符串,看看
改变\ _XD \ _
脚本使用功能DBConnectionStringFuncs.ps1
.
手动更新字符串
要手动更新字符串,请运行XenApp和XenDesktop PowerShell cmdlets。
步骤1。将SQL数据库移动到另一个SQL服务器并分配正确的权限
- 备份原始SQL Server上的数据库,并在新的SQL Server上还原它们。
- 在SQL Management Studio >安全>登录,添加Delivery Controller计算机帐户。例如,集团\ DDC01美元。
- 添加SQL登录时,在“用户映射”页面中,单击Citrix的三个数据库:站点数据库、监控数据库和日志数据库。
- 对于三个Citrix数据库中的每一个,将传递控制器计算机帐户添加到各种数据库角色。站点数据库具有比日志记录和监视数据库更多的角色。
网站数据库- ADIdentitySchema_ROLE网站数据库Analytics_ROLE # 7.8和更新站点数据库- AppLibrarySchema_ROLE # 7.8和更新站点数据库- chr_Broker网站数据库chr_Controller网站数据库- ConfigLoggingSiteSchema_ROLE网站数据库ConfigurationSchema_ROLE网站数据库- DAS_ROLE网站数据库DesktopUpdateManagerSchema_ROLE网站数据库- EnvTestServiceSchema_ROLE网站数据库HostingUnitServiceSchema_ROLE网站数据库- Monitor_ROLE网站数据库OrchestrationSchema_ROLE # 7.11和更新网站数据库-公共站点数据库- StorefrontSchema_ROLE # 7.8和更新站点的数据库- TrustSchema_ROLE # 7.11和更新监控数据库- Monitor_ROLE监控数据库-公共日志数据库- ConfigLoggingSchema_ROLE日志数据库-公共
步骤2。检索现有数据库连接(可选)
运行以下命令查看现有的数据库连接字符串:
##加载Citrix管理单元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步。删除现有的数据库连接
在这一点交付控制器,以管理员身份打开PowerShell并运行以下命令。此过程清除现有的数据库连接。
##注意日志站点的状态Get-LogSite ##加载Citrix snap-ins*## 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 * |停止服务--Force Get-Service Citrix * |启动服务<! - CentCopy - >
重新启动Citrix服务后,如果仍然看到错误,则必须重新启动服务器。重新运行原始的命令集,以确认已正确删除现有连接。
下面的cmdlet必须返回一个空输出:
##加载Citrix管理单元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
第四步。指定新的数据库连接字符串
调整变量以匹配所需的连接字符串。
- 对于独立SQL Server连接字符串:
服务器= SQLServerName;初始目录= DBName;集成安全= True
- 对于数据库镜像连接字符串:
server = primarysqlservername;初始目录= DBName;集成安全= True;故障转移伙伴=秒QLServer
- 总是在高可用性上:
服务器= ListenerName;初始目录= XDdb;集成安全= True;MultiSubnetFailover = True
运行以下命令以设置新的连接字符串。
美元ServerName = " < dbserver > " $ SiteDBName = " < SiteDBName >“$ LogDBName = " < LoggingDbName >“$ MonitorDBName = " < MonitorDBName >“$ csSite =“服务器= $ ServerName;初始目录= $ SiteDBName;综合安全= True”$ csLogging =“服务器= $ ServerName;初始目录= $ LogDBName;综合安全= True”csMonitoring美元= "服务器= $ ServerName;初始Set-AdminDBConnection -DBConnection $csSite Set-ConfigDBConnection -DBConnection $csSite Set-AcctDBConnection -DBConnection $csSite Set-AnalyticsDBConnection -DBConnection $csSite # for 7.6 and更新Set-HypDBConnection -DBConnection $csSite Set-ProvDBConnection -DBConnection $csSiteSet-AppLibDBConnection -DBConnection csSite #为7.8美元,较新的Set-OrchDBConnection -DBConnection csSite #为7.11美元,较新的Set-TrustDBConnection -DBConnection csSite #为7.11美元,较新的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 -DBConnection $null -force Set-MonitorDBConnection -DataStore Monitor -DBConnection $csMonitoring ##如果必要时,启用XD站点的配置日志记录:Set-LogSite -State Enabled
笔记:
验证上述所有
设置- > <服务DBConnection
命令返回的结果为好吧.如果结果不是好吧对于这些命令中的任何一个,都可能需要启用日志记录或跟踪,以确定连接失败的原因。这
Set-LogDBConnection -DBConnection美元零
和set-monitordbconnection -dbconnection $ null
返回DBUnconfigured代替好吧.
第5步。测试新的数据库连接字符串
运行以下命令以验证与数据库的连接。
##加载Citrix管理单元asnp Citrix。*美元ServerName = " < dbserver > " $ SiteDBName = " < SiteDBName >“$ LogDBName = " < LoggingDbName >“$ MonitorDBName = " < MonitorDBName >“$ csSite =“服务器= $ ServerName;初始目录= $ SiteDBName;综合安全= True”$ csLogging =“服务器= $ ServerName;初始目录= $ LogDBName;综合安全= True”csMonitoring美元= "服务器= $ ServerName;初始目录= $ MonitorDBName;综合安全= True”Test-AcctDBConnection -DBConnection美元csSite Test-AdminDBConnection -DBConnection美元csSite Test-AnalyticsDBConnection -DBConnection csSite #为7.6美元,较新的Test-AppLibDBConnection -DBConnection csSite #为7.8美元,较新的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 $ cslog Test-MonitorDBConnection -DBConnection $csSite Test-MonitorDBConnection -DataStore Monitor -DBConnection $csMonitoringTest-OrchDBConnection -DBConnection $csSite # for 7.11 and更新
重启Citrix工作室。