SQL Server高可用性ソリューションを使用するときにデータベース接続文字列を更新する
Citrixでは,常にオンやミラーリングなどのSQL Serverの高可用性データベースソリューションを使用している場合に,XenAppおよびXenDesktopデータベース接続文字列を更新するPowerShellスクリプトがいくつか用意されています。
これらのスクリプトは,XenAppおよびXenDesktop ktopのPowerShellのAPIを使用するものです。
- DB接続文字列関数.ps1:実際の作業を行うコアスクリプト。このスクリプトには,他のスクリプトが使用する共通関数が含まれています。
- Change_XD_Failover_Partner_v1.ps1:フェイルオーバーパートナーを更新(追加,変更,削除)します。このスクリプトは,各データベースのフェイルオーバーパートナーの場所(fqdn)を要求します。(空のフェイルオーバーパートナーを指定すると,フェイルオーバーパートナーは削除されます。また,ClearPartnerオプションを使用してパートナーを削除することもできます)。フェイルオーバーパートナーは,プリンシパルデータベースサーバーと同じ場所に設定しないでください。
- Change_XD_To_ConnectionString.ps1:指定された接続文字列を使用して,データベースへの接続文字列を更新します。このスクリプトにより,特定のCitrixサービスが稼働していることを確認し,サイト内のすべての控制器でこれらのサービスを正しい順序で更新します。各データベースの接続文字列情報を引用符で囲みます。
- Change_XD_To_MultiSubnetFailover.ps1:マルチサブネットフェイルオーバー=trueの追加と削除を切り替えます。常に可用性グループを使用する場合は,接続文字列にMultiSubnetFailover = Trueを含めることをお勧めします。このオプションは,高可用性イベントが発生したときのリカバリを高速化します。単一サブネット環境と複数サブネット環境の両方に推奨されます。このスクリプトを1回実行して,オプションを追加します。オプションを削除する必要がある場合は,
Change_XD_To_ConnectionString.ps1
を使用してスクリプトを再度実行し,設定なしで文字列を指定します。 Change_XD_To_Null.ps1
:何かが間違っているため,localhost上のすべての接続文字列をリセットします。接続文字列を零にリセットすることにより,このスクリプトはコントローラを”初期”状態にします。このスクリプトを実行した後に工作室を実行すると,サイトを作成するか,既存のサイトに参加するかを尋ねられます。これは,何かが間違ってリセットが必要な場合に便利です。リセット後,Change_XD_To_ConnectionString。Ps1を使用して接続文字列の設定を再試行できます。
データベース接続文字列を手動で更新することもできます。「文字列を手動で更新するを参照してください。PowerShellスクリプトをダウンロードするには、「手順を参照してください。
要件および考慮事項
- スクリプトを実行するには,完全なサイト管理者である必要があります。
- 1つのコントローラのPowerShellウィンドウでスクリプトを実行します。PowerShellのv3が必要です。
- XenAppおよびXenDesktopのコアコンポーネントをインストールし,サイトを起動して実行する必要があります。
- スクリプトを実行する前に,必須の構成ログを無効にします。
マルチサブネットフェイルオーバーオプションは,。Net 4.5以降でサポートされています。ただし,StudioがWindows 7または2008 R2マシンで使用しているMMCには以前の。netバージョンが含まれているため,工作室のナビゲーションペインで[構成]を選択すると,”キーワードがサポートされていません:
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
スクリプトを使用して,このオプションを使用してデータベース接続文字列を更新します。
手順
- Citrix ShareFileからスクリプトを含むzipファイルをダウンロードします。
- ファイルを解凍します。
- DB接続文字列関数.ps1内の関数を使用するため、実行するスクリプトと同じフォルダーに DBConnectionStringFuncs.ps1 があることを確認してください。
- コントローラ上でスクリプトを実行します。
サイトをマルチサブネットフェイルオーバーに設定する場合は,Change_XD_To_MultiSubnetFailover。ps1スクリプトを実行するだけで済みます。(注意:DBConnectionStringFuncs。Ps1スクリプトが同じフォルダーにあることを確認してください)。
ヒント:
- 接続文字列が更新されると,”
CITRIX服务器= SQLxxx \ \ \ \…
“が”数据源= SQLxxx \ \ CITRIX \ \…
に変更されたことを示すメッセージが表示されるのが普通です。“サーバー”と“データソース”という用語は同義語です。- 接続文字列を操作する場合は,
改变\ _XD \ _
スクリプトでDBConnectionStringFuncs.ps1
の関数がどのように使用されるかを調べます。
文字列を手動で更新する
文字列を手動で更新するには,XenAppコマンドレットおよびXenDesktop PowerShellコマンドレットを実行します。
手順1.SQLデータベースを別のSQLサーバーに移動し,適切なアクセス許可を割り当てる
- 元のSQLサーバ上のデータベースをバックアップし,新しいSQLサーバーにリストアします。
- [SQL Management Studio] >[セキュリティ]>[ログイン]で,交付控制员コンピュータアカウントを追加します。たとえば,次のように入力します。
- SQLログインを追加するときは,[ユーザーマッピング]ページで,[サイトデータベース],[監視データベース],[ログデータベース]の3つのCitrixデータベースをクリックします。
- 3つの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 # for 7.11和更新的站点数据库-公共站点数据库- StorefrontSchema_ROLE # for 7.8和更新的站点数据库- TrustSchema_ROLE # for 7.11和更新的监控数据库- Monitor_ROLE监控数据库-公共日志数据库- ConfigLoggingSchema_ROLE日志数据库-公共
手順2.既存のデータベース接続を取得する(オプション)
次のコマンドを実行して,既存のデータベース接続文字列を確認します。
##加载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を開き,次のコマンドを実行します。このプロセスは,既存のデータベース接続を消去します。
##加载Citrix管理单元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* | Start-Service
Citrixサービスを再起動した後,引き続きエラーが表示される場合は,サーバーを再起動する必要があります。元のコマンドセットを再実行して,既存の接続が正しく削除されていることを確認します。
次のコマンドレットは,空の出力を返す必要があります。
##加载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接続文字列の場合:
服务器= SQLServerName;初始目录= DBName;集成安全= True
- データベースのミラーリング接続文字列の場合:
服务器= PrimarySQLServerName;初始目录= DBName;集成安全= True;故障转移伙伴= SecondSQLServer
- 永远在機能による高可用性の場合:
服务器= ListenerName;初始目录= XDdb;集成安全= True;MultiSubnetFailover = True
次のコマンドを実行して,新しい接続文字列を設定します。
$ cslog = "服务器=$ServerName;初始目录=$LogDBName;集成安全=True" $csMonitoring = "服务器=$ServerName;初始目录=$LogDBName;集成安全=True" $csMonitoring = "服务器=$ServerName;初始目录=$MonitorDBName;集成安全=True" Set-AdminDBConnection -DBConnection $csSite Set-ConfigDBConnection -DBConnection $csSite Set-AcctDBConnection - $csSite Set-AcctDBConnection-DBConnection $csSite Set-AnalyticsDBConnection -DBConnection $csSite #用于7.6和更新的Set-HypDBConnection -DBConnection $csSite Set-ProvDBConnection -DBConnection $csSite Set-AppLibDBConnection -DBConnection $csSite #用于7.8和更新的Set-OrchDBConnection -DBConnection $csSite #用于7.11和更新的Set-TrustDBConnection -DBConnection $csSite #用于7.11和更新的Set-BrokerDBConnection -DBConnection $csSite Set-SfDBConnection -DBConnection $csSite Set-SfDBConnection -DBConnection $csSiteSet-LogDBConnection -DBConnection $csSite Set-LogDBConnection -DataStore Logging $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
注:
上記のすべての
设置- > <服务DBConnection
コマンドが(好的)の結果を返したことを確認します。これらのコマンドの結果が(好的)以外の場合は,ロギングまたはトレースを有効にして,接続エラーの原因を特定する必要があります。
Set-LogDBConnection -DBConnection美元零
とSet-MonitorDBConnection -DBConnection美元零
が好吧ではなくDBUnconfiguredを返します。
手順5.新しいデータベース接続文字列のテスト
次のコマンドを実行して,データベースへの接続を確認します。
##加载Citrix管理单元*$ServerName = "
" $SiteDBName = " " $LogDBName = " " $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 Citrix Studioを再起動します。