Concepts avancés

Mettre à jour les chaînes de connexion de base de données lors de l’utilisation de solutions de haute disponibilité SQL Server

Citrix propose plusieurs scripts PowerShell qui mettent à jour les chaînes de connexion de base de données XenApp et XenDesktop® lorsque vous utilisez des solutions de base de données SQL Server à haute disponibilité telles que Always On et la mise en miroir.

Les scripts, qui utilisent l’API PowerShell de XenApp® et XenDesktop, sont :

  • DBConnectionStringFuncs.ps1 : Le script principal qui effectue le travail réel. Ce script contient des fonctions communes utilisées par les autres scripts.
  • Change_XD_Failover_Partner_v1.ps1 : Met à jour (ajoute, modifie ou supprime) le partenaire de basculement. Ce script demande l’emplacement du partenaire de basculement (FQDN) pour chaque base de données. (Fournir un partenaire de basculement vide supprime le partenaire de basculement. Vous pouvez également utiliser l’option ClearPartner pour supprimer un partenaire.) Ne définissez pas le partenaire de basculement au même emplacement que le serveur de base de données principal.
  • Change_XD_To_ConnectionString.ps1 : Utilise les chaînes de connexion fournies pour mettre à jour les chaînes de connexion vers les bases de données. Ce script garantit que certains services Citrix sont opérationnels, puis met à jour ces services dans le bon ordre sur tous les contrôleurs du site. Mettez entre guillemets les informations de la chaîne de connexion pour chaque base de données.
  • Change_XD_To_MultiSubnetFailover.ps1 : Active ou désactive l’ajout et la suppression de MultiSubnetFailover=true. Si vous utilisez les groupes de disponibilité Always On, Microsoft recommande que la chaîne de connexion inclue MultiSubnetFailover=true. Cette option accélère la récupération lorsqu’un événement de haute disponibilité se produit et est recommandée pour les environnements à sous-réseau unique et multi-sous-réseaux. Exécutez ce script une fois pour ajouter l’option. Si vous devez supprimer l’option, utilisez Change_XD_To_ConnectionString.ps1 pour exécuter à nouveau le script et fournir des chaînes sans le paramètre.
  • Change_XD_To_Null.ps1 : Réinitialise toutes les chaînes de connexion sur l’hôte local car une erreur s’est produite. En réinitialisant les chaînes de connexion à null, ce script place le contrôleur dans un état « initial ». Si vous exécutez Studio après avoir exécuté ce script, il vous sera demandé si vous souhaitez créer un site ou rejoindre un site existant. Ceci est utile si une erreur s’est produite et qu’une réinitialisation est nécessaire. Après la réinitialisation, vous pouvez essayer de définir à nouveau les chaînes de connexion à l’aide de Change_XD_To_ConnectionString.ps1.

Vous pouvez également mettre à jour les chaînes de connexion de base de données manuellement ; consultez Mettre à jour les chaînes manuellement. Pour télécharger les scripts PowerShell, consultez la section Procédure.

Important :

Cet article a été rédigé et les scripts ont été testés sur XenDesktop 7.6. Cette documentation n’est plus maintenue ni testée avec les versions ultérieures de Citrix Virtual Apps and Desktops.

Exigences et considérations

  • Vous devez être un administrateur de site complet pour exécuter les scripts.
  • Exécutez les scripts dans la fenêtre PowerShell d’un contrôleur. PowerShell v3 est requis.
  • Les composants principaux de XenApp et XenDesktop doivent être installés et le site doit être opérationnel.
  • Avant d’exécuter les scripts, désactivez la journalisation obligatoire de la configuration.
  • L’option MultiSubnetFailover est prise en charge avec .NET 4.5 et versions ultérieures. Cependant, la console MMC que Studio utilise sur les machines Windows 7 ou 2008 R2 contient une version antérieure de .NET, vous pourriez donc voir l’erreur « Mot-clé non pris en charge : multisubnetfailover » lorsque vous sélectionnez Configuration dans le volet de navigation Studio. Dans de tels cas, appliquez un correctif ou mettez à jour comme suit :

  • Pour .NET 3.5 SP1, appliquez le correctif avec http://support.microsoft.com/kb/2654347.
  • Pour .NET 4.0, mettez à jour vers la version minimale 4.0.2. La version 4.0.3 est recommandée : http://support.microsoft.com/kb/2600211.

Ensuite, utilisez le script Change_XD_To_MultiSubnetFailover.ps1 pour mettre à jour les chaînes de connexion de la base de données avec cette option.

Procédure

  1. Téléchargez le fichier zip contenant les scripts depuis Citrix ShareFile.
  2. Décompressez le fichier.
  3. Assurez-vous que DBConnectionStringFuncs.ps1 se trouve dans le même dossier que le script que vous exécutez, car le script que vous exécutez utilise les fonctions de DBConnectionStringFuncs.ps1.
  4. Exécutez le script sur un Controller.

Si vous souhaitez configurer votre site pour le basculement multi-sous-réseaux, il vous suffit d’exécuter le script Change_XD_To_MultiSubnetFailover.ps1. (N’oubliez pas : assurez-vous que le script DBConnectionStringFuncs.ps1 se trouve dans le même dossier.)

Conseils :

  • Lorsque les chaînes de connexion sont mises à jour, il est normal de voir un message indiquant que « Server=SQLxxx\\CITRIX\\... » est remplacé par Data Source=SQLxxx\\CITRIX\\... ». Les termes Serveur et Source de données sont synonymes.
  • Si vous souhaitez manipuler les chaînes de connexion, examinez comment les scripts Change\_XD\_ utilisent les fonctions de DBConnectionStringFuncs.ps1.

Mettre à jour les chaînes manuellement

Pour mettre à jour les chaînes manuellement, exécutez les cmdlets PowerShell de XenApp et XenDesktop.

Étape 1. Déplacez les bases de données SQL vers un autre serveur SQL et attribuez les autorisations correctes

  1. Sauvegardez les bases de données sur le serveur SQL d’origine et restaurez-les sur le nouveau serveur SQL.
  2. Dans SQL Management Studio > Sécurité > Connexions, ajoutez les comptes d’ordinateur du Delivery Controller. Par exemple, CORP\DDC01$.
  3. Lors de l’ajout de la connexion SQL, sur la page Mappage de l’utilisateur, cliquez sur les trois bases de données Citrix : base de données de site, base de données de surveillance et base de données de journalisation.
  4. Pour chacune des trois bases de données Citrix, ajoutez le compte d’ordinateur du Delivery Controller™ aux différents rôles de base de données. La base de données de site a beaucoup plus de rôles que les bases de données de journalisation et de surveillance.
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-->

Étape 2. Récupérez les connexions de base de données existantes (facultatif)

Exécutez les commandes suivantes pour afficher les chaînes de connexion de base de données existantes :

## 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-->

Étape 3. Supprimez les connexions de base de données existantes

Sur le Delivery Controller, ouvrez PowerShell en tant qu’administrateur et exécutez les commandes suivantes. Ce processus efface les connexions de base de données existantes.

## 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-->

Si un message d’erreur s’affiche, vous devez redémarrer tous les services Citrix.

Get-Service Citrix* | Stop-Service -Force
Get-Service Citrix* | Start-Service
<!--NeedCopy-->

Après avoir redémarré les services Citrix, si les erreurs persistent, vous devez redémarrer le serveur. Réexécutez l’ensemble de commandes d’origine pour confirmer que la connexion existante est correctement supprimée.

Les cmdlets suivantes doivent renvoyer une sortie vide :

## 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-->

Étape 4. Spécifiez les nouvelles chaînes de connexion de base de données

Ajustez les variables pour qu’elles correspondent à la chaîne de connexion souhaitée.

  • Pour la chaîne de connexion SQL Server autonome : Server=SQLServerName; Initial Catalog=DBName; Integrated Security=True
  • Pour la chaîne de connexion de mise en miroir de base de données : Server=PrimarySQLServerName; Initial Catalog=DBName; Integrated Security=True; Failover Partner=SecondSQLServer
  • Pour Always On High Availability : Server=ListenerName; Initial Catalog=XDdb; Integrated Security=True; MultiSubnetFailover=True

Exécutez les commandes suivantes pour définir les nouvelles chaînes de connexion.

$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-->

Remarque :

Vérifiez que toutes les commandes Set-<service>DBConnection précédentes ont renvoyé un résultat OK. Si le résultat est autre que OK pour l’une de ces commandes, il peut être nécessaire d’activer la journalisation ou le traçage pour déterminer la cause de l’échec de la connexion.

Les Set-LogDBConnection -DBConnection $null et Set-MonitorDBConnection -DBConnection $null renvoient DBUnconfigured au lieu de OK.

Étape 5. Testez les nouvelles chaînes de connexion de base de données

  1. Exécutez les commandes suivantes pour vérifier la connectivité à la base de données.

    ## 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-->
    
  2. Redémarrez Citrix Studio.

Plus d’informations

Mettre à jour les chaînes de connexion de base de données lors de l’utilisation de solutions de haute disponibilité SQL Server