高度な概念

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スクリプトを使用して,このオプションを使用してデータベース接続文字列を更新します。

手順

  1. Citrix ShareFileからスクリプトを含むzipファイルをダウンロードします。
  2. ファイルを解凍します。
  3. DB接続文字列関数.ps1内の関数を使用するため、実行するスクリプトと同じフォルダーに DBConnectionStringFuncs.ps1 があることを確認してください。
  4. コントローラ上でスクリプトを実行します。

サイトをマルチサブネットフェイルオーバーに設定する場合は,Change_XD_To_MultiSubnetFailover。ps1スクリプトを実行するだけで済みます。(注意:DBConnectionStringFuncs。Ps1スクリプトが同じフォルダーにあることを確認してください)。

ヒント:

  • 接続文字列が更新されると,”CITRIX服务器= SQLxxx \ \ \ \…“が”数据源= SQLxxx \ \ CITRIX \ \…に変更されたことを示すメッセージが表示されるのが普通です。“サーバー”と“データソース”という用語は同義語です。
  • 接続文字列を操作する場合は,改变\ _XD \ _スクリプトでDBConnectionStringFuncs.ps1の関数がどのように使用されるかを調べます。

文字列を手動で更新する

文字列を手動で更新するには,XenAppコマンドレットおよびXenDesktop PowerShellコマンドレットを実行します。

手順1.SQLデータベースを別のSQLサーバーに移動し,適切なアクセス許可を割り当てる

  1. 元のSQLサーバ上のデータベースをバックアップし,新しいSQLサーバーにリストアします。
  2. SQL Management Studio] >[セキュリティ]>[ログイン]で,交付控制员コンピュータアカウントを追加します。たとえば,次のように入力します。
  3. SQLログインを追加するときは,[ユーザーマッピング]ページで,[サイトデータベース],[監視データベース],[ログデータベース]の3つのCitrixデータベースをクリックします。
  4. 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.新しいデータベース接続文字列のテスト

  1. 次のコマンドを実行して,データベースへの接続を確認します。

    ##加载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 
  2. Citrix Studioを再起動します。

詳細情報の表示

SQL Server高可用性ソリューションを使用するときにデータベース接続文字列を更新する