SQL Server 高可用性ソリューションを使用するときにデータベース接続文字列を更新する
Citrix は、常時オンやミラーリングなどのSQL Server 高可用性データベースソリューションを使用しているときに、XXenApp およびXenDesktopデータベース接続文字列を更新するいくつかのPowerShell lスクリプトを提供しています。
これらのスクリプトは、XenAppおよびXenDesktop ktopのPowerShell のAPIを使用するものです。
- DB接続文字列関数.ps1: 実際の作業を行うコアスクリプト。このスクリプトには、他のスクリプトが使用する共通関数が含まれています。
- Change_XD_Failover_Partner_v1.ps1: フェイルオーバーパートナーを更新 (追加、変更、削除) します。このスクリプトは、各データベースのフェイルオーバーパートナーの場所 (FQDN) を要求します。(空のフェイルオーバーパートナーを指定すると、フェイルオーバーパートナーは削除されます。また、ClearPartner オプションを使用してパートナーを削除することもできます)。 フェイルオーバーパートナーは、プリンシパルデータベースサーバーと同じ場所に設定しないでください。
- Change_XD_To_ConnectionString.ps1: 指定された接続文字列を使用して、データベースへの接続文字列を更新します。このスクリプトにより、特定のCitrix サービスが稼働していることを確認し、サイト内のすべてのControllerでこれらのサービスを正しい順序で更新します。各データベースの接続文字列情報を引用符で囲みます。
-
change_xd_to_multiSubnetFailover.ps1: multiSubnetFailover=trueの追加と削除を切り替えます。AlwaysOn 可用性グループを使用する場合、Microsoftは、接続文字列に multiSubnetFailover=True を含めることを推奨します。このオプションは、高可用性イベントが発生したときのリカバリを高速化します。単一サブネット環境と複数サブネット環境の両方に推奨されます。このスクリプトを 1 回実行して、オプションを追加します。オプションを削除する必要がある場合は、
Change_XD_To_ConnectionString.ps1
を使用してスクリプトを再実行し、設定なしで文字列を指定します。 -
Change_XD_To_Null.ps1
: 何か問題が発生したため、ローカルホスト上のすべての接続文字列をリセットします。接続文字列をnullにリセットすることにより、このスクリプトはControllerを「初期」状態にします。このスクリプトを実行した後にStudioを実行すると、サイトを作成するか、既存のサイトに参加するかを尋ねられます。これは、何かが間違ってリセットが必要な場合に便利です。リセット後、Change_XD_To_ConnectionString.ps1 を使用して接続文字列の設定を再試行できます。
データベース接続文字列を手動で更新することもできます。 文字列を手動で更新するを参照してください。PowerShell スクリプトをダウンロードするには、「 手順 」セクションを参照してください。
重要:
この記事はXenDesktop 7.6で作成され、スクリプトがテストされました。このドキュメントは、新しいバージョンのCitrix Virtual Apps and Desktopsでは保守またはテストされなくなりました。
要件および考慮事項
- スクリプトを実行するには、完全なサイト管理者である必要があります。
- 1 つのコントローラの PowerShell ウィンドウでスクリプトを実行します。PowerShell のv3が必要です。
- XenAppおよびXenDesktop のコアコンポーネントをインストールし、サイトを起動して実行する必要があります。
- スクリプトを実行する前に、必須の構成ログを無効にします。
-
マルチサブネットフェイルオーバーオプションは、.NET 4.5 以降でサポートされています。ただし、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 に更新することをお勧めします:http://support.microsoft.com/kb/2600211。
次に、Change_XD_To_MultiSubnetFailover.ps1
スクリプトを使用して、このオプションでデータベース接続文字列を更新します。
手順
- スクリプトを含むzipファイルをCitrix ShareFileからダウンロードします。
- ファイルを解凍します。
- DB接続文字列関数.ps1 内の関数を使用するため、実行するスクリプトと同じフォルダーに DBConnectionStringFuncs.ps1 があることを確認してください。
- コントローラ上でスクリプトを実行します。
サイトをマルチサブネットフェイルオーバーに設定する場合は、Change_XD_To_MultiSubnetFailover.ps1 スクリプトを実行するだけで済みます。(注意:DBConnectionStringFuncs.ps1 スクリプトが同じフォルダーにあることを確認してください)。
ヒント:
- 接続文字列が更新されると、「
Server=SQLxxx\\CITRIX\\...
」が「Data Source=SQLxxx\\CITRIX\\...
」に変更されたことを示すメッセージが表示されるのが普通です。「サーバー」と「データソース」という用語は同義語です。- 接続文字列を操作する場合は、
Change\_XD\_
スクリプトでDBConnectionStringFuncs.ps1
の関数がどのように使用されるかを調べます。
文字列を手動で更新する
文字列を手動で更新するには、XenAppコマンドレットおよびXenDesktop PowerShell コマンドレットを実行します。
手順1:SQL データベースを別の SQL サーバーに移動し、適切なアクセス許可を割り当てる
- 元の SQL サーバ上のデータベースをバックアップし、新しい SQL サーバーにリストアします。
- [SQL Management Studio] > [セキュリティ] > [ログイン]で、Delivery Controller コンピュータアカウントを追加します。たとえば、次のように入力します。
- SQLログインを追加するときは、[ユーザーマッピング]ページで、[サイトデータベース]、[監視データベース]、[ログデータベース]の3つのCitrixデータベースをクリックします。
- 3つの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
<!--NeedCopy-->
手順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
<!--NeedCopy-->
手順3:既存のデータベース接続の削除
DDelivery 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
<!--NeedCopy-->
エラーメッセージが表示された場合は、すべてのCitrix サービスを再起動する必要があります。
Get-Service Citrix* | Stop-Service -Force
Get-Service Citrix* | Start-Service
<!--NeedCopy-->
Citrix サービスを再起動した後、引き続きエラーが表示される場合は、サーバーを再起動する必要があります。元のコマンドセットを再実行して、既存の接続が正しく削除されていることを確認します。
次のコマンドレットは、空の出力を返す必要があります。
## 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
<!--NeedCopy-->
手順4:新しいデータベース接続文字列の指定
目的の接続文字列に合わせて変数を調整します。
- スタンドアロンのSQL Server接続文字列の場合:
Server=SQLServerName; Initial Catalog=DBName; Integrated Security=True
- データベースのミラーリング接続文字列の場合:
Server=PrimarySQLServerName; Initial Catalog=DBName; Integrated Security=True; Failover Partner=SecondSQLServer
- Always On機能による高可用性の場合:
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
<!--NeedCopy-->
注:
上記のすべての
Set-<service>DBConnection
コマンドが [OK] の結果を返したことを確認します。これらのコマンドの結果が [OK] 以外の場合は、ロギングまたはトレースを有効にして、接続エラーの原因を特定する必要があります。
Set-LogDBConnection -DBConnection $null
とSet-MonitorDBConnection -DBConnection $null
がOKではなくDBUnconfiguredを返します。
手順5:新しいデータベース接続文字列のテスト
-
次のコマンドを実行して、データベースへの接続を確認します。
## 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 <!--NeedCopy-->
-
Citrix Studioを再起動します。