Mise à jour des chaînes de connexion de la 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 aux bases de données XenApp et XenDesktop lorsque vous utilisez des solutions de base de données haute disponibilité SQL Server telles que Always On et la mise en miroir.
Les scripts, qui utilisent l’API XenApp et XenDesktop PowerShell, sont les suivants :
- DBConnectionStringFuncs.ps1 : script de base qui effectue le travail réel. Ce script contient des fonctions courantes que les autres scripts utilisent.
- Change_XD_Failover_Partner_v1.ps1 : met à jour (ajoute, modifie ou supprime) le partenaire de basculement. Ce script vous invite à indiquer l’emplacement du partenaire de basculement (FQDN) pour chaque base de données. (La fourniture d’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 sur le 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 actualiser les chaînes de connexion vers les bases de données. Ce script garantit que certains services Citrix sont en cours d’exécution, puis met à jour ces services dans l’ordre correct sur tous les Controller du site. Enfermer les informations de chaîne de connexion pour chaque base de données entre guillemets.
-
Change_XD_TO_MultiSubnetFailover.ps1 : Bascule l’ajout et la suppression de MultiSubnetFailover=True. Si vous utilisez des groupes de disponibilité Always On, Microsoft recommande que la chaîne de connexion inclut MultiSubnetFailover=True. Cette option accélère la restauration lorsqu’un événement de haute disponibilité se produit et est recommandée pour les environnements à sous-réseau unique et multi-sous-réseau. Exécutez ce script une fois pour ajouter l’option. Si vous devez supprimer l’option, utilisez
Change_XD_To_ConnectionString.ps1
pour réexécuter 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 en raison d’un problème. En réinitialisant les chaînes de connexion à null, ce script place le Controller 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 quelque chose a mal tourné et qu’une réinitialisation est nécessaire. Après la réinitialisation, vous pouvez réessayer de définir 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 ; voir Mettre à jour les chaînes Pour télécharger les scripts PowerShell, consultez la section Procédure .
Important :
Cet article a été écrit 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.
Configuration requise 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 Controller. PowerShell v3 est requis.
- Les composants principaux XenApp et XenDesktop doivent être installés et le site est opérationnel.
- Avant d’exécuter les scripts, désactivez la journalisation de la configuration obligatoire.
-
L’option MultiSubnetFailover est prise en charge avec .NET 4.5 et versions ultérieures. Toutefois, la console MMC que Studio utilise sur les machines Windows 7 ou 2008 R2 contient une version .NET antérieure. L’erreur « Mot-clé non pris en charge :
multisubnetfailover
» peut donc s’afficher lorsque vous sélectionnez Configuration dans le volet de navigation de Studio . Dans de tels cas, correctif ou mise à jour comme suit : - Pour .NET 3.5 SP1, correctif avec http://support.microsoft.com/kb/2654347.
- Pour .NET 4.0, la mise à jour vers 4.0.2 minimum. 4.0.3 est recommandée : http://support.microsoft.com/kb/2600211.
Utilisez ensuite le script Change_XD_To_MultiSubnetFailover.ps1
pour mettre à jour les chaînes de connexion à la base de données avec cette option.
Procédure
- Téléchargez le fichier zip contenant les scripts depuis Citrix ShareFile.
- Décompressez le fichier.
- 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 des fonctions dans DBConnectionStringFuncs.ps1.
- Exécutez le script sur un Controller.
Si vous souhaitez définir le basculement de sous-réseaux multiples de votre site, vous devez uniquement exécuter le script Change_XD_To_MultiSubnetFailover.ps1. (Rappelez-vous : 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, observez comment les scripts
Change\_XD\_
utilisent les fonctions deDBConnectionStringFuncs.ps1
.
Mise à jour manuelle des chaînes
Pour actualiser les chaînes manuellement, exécutez les applets de commande XenApp et XenDesktop PowerShell.
Étape 1. Déplacer les bases de données SQL vers un autre serveur SQL et affecter les autorisations correctes
- Sauvegardez les bases de données sur le serveur SQL d’origine et restaurez-les sur le nouveau serveur SQL.
- Dans SQL Management Studio > Sécurité > Logins, ajoutez les comptes d’ordinateur Delivery Controller. Par exemple, CORP\DDC01$.
- Lors de l’ajout de la connexion SQL, sur la page Mappage utilisateur, cliquez sur les trois bases de données Citrix : Base de données Site, Base de données de surveillance et Base de données de journalisation.
- Pour chacune des trois bases de données Citrix, ajoutez le compte d’ordinateur Delivery Controller aux différents rôles de base de données. La base de données du 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érer les connexions de base de données existantes (facultatif)
Exécutez les commandes suivantes pour afficher les chaînes de connexion à la 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. Supprimer les connexions à la 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 le redémarrage des services Citrix, si vous voyez toujours les erreurs, 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 applets de commande 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écifier les nouvelles chaînes de connexion à la 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é le résultat OK . Si le résultat est différent de OK pour l’une de ces commandes, il peut être nécessaire d’activer la journalisation ou le suivi pour déterminer la cause de l’échec de connexion.
Set-LogDBConnection -DBConnection $null
etSet-MonitorDBConnection -DBConnection $null
renvoient DBUnconfigured au lieu de OK.
Étape 5. Tester les nouvelles chaînes de connexion à la base de données
-
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-->
-
Redémarrez Citrix Studio.