Conceptos avanzados

Actualizar cadenas de conexión de base de datos cuando se utilizan soluciones de alta disponibilidad de SQL Server

Citrix ofrece varios scripts de PowerShell que actualizan las cadenas de conexión a bases de datos de XenApp y XenDesktop cuando se utilizan soluciones de base de datos de alta disponibilidad de SQL Server, como Always On y mirroring.

Los scripts, que utilizan la API de PowerShell de XenApp y XenDesktop, son:

  • DBConnectionStringFuncs.ps1: El script principal que realiza el trabajo real. Este script contiene funciones comunes que utilizan los otros scripts.
  • Change_xd_failover_partner_v1.ps1: Actualiza (agrega, cambia o quita) el asociado de conmutación por error. Este script solicita la ubicación del asociado de conmutación por error (FQDN) para cada base de datos. (al proporcionar un asociado de conmutación por error vacío, se elimina el asociado de conmutación por error; también puede usar la opción ClearPartner para eliminar un asociado). No establezca el asociado de conmutación por error en la misma ubicación que el servidor de base de datos principal.
  • Change_XD_To_ConnectionString.ps1: Utiliza las cadenas de conexión proporcionadas para actualizar las cadenas de conexión a las bases de datos. Este script garantiza que determinados servicios Citrix estén en funcionamiento y, a continuación, los actualiza en el orden correcto en todos los Controllers del sitio. Incluya entre comillas la información de cadena de conexión de cada base de datos.
  • Change_XD_To_MultiSubnetFailover.ps1: Activa o desactiva la adición y eliminación de MultiSubnetFailover=true. Si usa Always On Availability Groups, Microsoft recomienda que la cadena de conexión incluya MultiSubnetFailover=true. Esta opción acelera la recuperación cuando se produce un evento de alta disponibilidad y se recomienda para entornos de una sola subred y multisubred. Ejecute este script una vez para agregar la opción. Si debe quitar la opción, utilice Change_XD_To_ConnectionString.ps1 para ejecutar el script de nuevo y proporcionar cadenas sin la configuración.
  • Change_XD_To_Null.ps1: Restablece todas las cadenas de conexión en el host local porque algo ha salido mal. Al restablecer las cadenas de conexión a null, este script coloca el Controller en un estado “inicial”. Si ejecuta Studio después de ejecutar este script, se le preguntará si quiere crear un sitio o unirse a un sitio existente. Esto es útil si algo ha ido mal y se necesita un restablecimiento. Después del restablecimiento, puede volver a intentar configurar las cadenas de conexión mediante Change_xd_to_connectionString.ps1.

También puede actualizar las cadenas de conexión a la base de datos manualmente; consulte Actualizar cadenas manualmente. Para descargar los scripts de PowerShell, consulte la sección Procedimiento.

Importante:

Este artículo se escribió y los scripts se probaron en XenDesktop 7.6. Esta documentación ya no se mantiene ni se prueba con versiones posteriores de Citrix Virtual Apps and Desktops.

Requisitos y consideraciones

  • Debe ser un administrador total del sitio para ejecutar los scripts.
  • Ejecute los scripts en la ventana PowerShell de un Controller. Se requiere PowerShell v3.
  • Los componentes principales de XenApp y XenDesktop deben estar instalados y el sitio debe estar en funcionamiento.
  • Antes de ejecutar los scripts, inhabilite el registro de configuración obligatorio.
  • La opción MultiSubnetFailover es compatible con .NET 4.5 y versiones posteriores. Sin embargo, el MMC que Studio utiliza en equipos con Windows 7 o 2008 R2 contiene una versión anterior de.NET, por lo que puede ver el error “Palabra clave no compatible: multisubnetfailover” al seleccionar Configuración en el panel de navegación de Studio. En estos casos, aplique el parche o la actualización de la siguiente manera:

  • Para .NET 3.5 SP1, aplique el parche http://support.microsoft.com/kb/2654347.
  • Para .NET 4.0, se recomienda actualizar al mínimo 4.0.2. o 4.0.3: http://support.microsoft.com/kb/2600211.

A continuación, utilice el script Change_XD_To_MultiSubnetFailover.ps1 para actualizar las cadenas de conexión de base de datos con esta opción.

Procedimiento

  1. Descargue el archivo zip que contiene los scripts de Citrix ShareFile.
  2. Descomprima el archivo.
  3. Asegúrese de que DBConnectionStringFuncs.ps1 se encuentra en la misma carpeta que el script que ejecuta, ya que el script utiliza funciones de DBConnectionStringFuncs.ps1.
  4. Ejecute el script en un Controller.

Si quiere configurar el sitio en conmutación por error de varias subredes, solo necesita ejecutar el script Change_XD_To_MultiSubnetFailover.ps1 (recuerde que el script DBConnectionStringFuncs.ps1 debe estar en la misma carpeta).

Sugerencias:

  • Cuando se actualizan las cadenas de conexión, es normal ver un mensaje que indica que “Server=SQLxxx\\CITRIX\\...” se está cambiando a “Data Source=SQLxxx\\CITRIX\\...”. Los términos Servidor y Origen de datos son sinónimos.
  • Si quiere manipular las cadenas de conexión, observe cómo los scripts Change\_XD\_ usan las funciones en DBConnectionStringFuncs.ps1.

Actualizar cadenas manualmente

Para actualizar las cadenas manualmente, ejecute los cmdlets PowerShell de XenApp y XenDesktop.

Paso 1. Mueva las bases de datos SQL a un servidor SQL diferente y asigne los permisos correctos

  1. Realice una copia de seguridad de las bases de datos en el servidor SQL original y restáurelas en el nuevo servidor SQL.
  2. En SQL Management Studio > Seguridad > Inicios de sesión,agregue las cuentas de equipo de Delivery Controller. Por ejemplo, CORP\DDC01$.
  3. Al agregar el inicio de sesión de SQL, en la página Asignación de usuarios, haga clic en las tres bases de datos de Citrix: Base de datos del sitio, Base de datos de supervisión y Base
  4. Para cada una de las tres bases de datos Citrix, agregue la cuenta de equipo Delivery Controller a las distintas funciones de base de datos. La base de datos del sitio tiene muchas más funciones que las bases de datos de registro y supervisión.
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-->

Paso 2. Recuperar las conexiones de base de datos existentes (opcional)

Ejecute los siguientes comandos para ver las cadenas de conexión de base de datos existentes:

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

Paso 3. Eliminar las conexiones de base de datos existentes

En el Delivery Controller, abra PowerShell como administrador y ejecute los siguientes comandos. Este proceso borra las conexiones de base de datos existentes.

## 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 ve un mensaje de error, debe reiniciar todos los servicios de Citrix.

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

Después de reiniciar los servicios de Citrix, si sigue viendo los errores, debe reiniciar el servidor. Vuelva a ejecutar el conjunto de comandos original para confirmar que la conexión existente se ha eliminado correctamente.

Los cmdlets siguientes deben devolver una salida vacía:

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

Paso 4. Especificar las nuevas cadenas de conexión de base

Ajuste las variables para que coincidan con la cadena de conexión deseada.

  • Para la cadena de conexión independiente de SQL Server: Server=SQLServerName; Initial Catalog=DBName; Integrated Security=True
  • Para la cadena de conexión de reflejo de base de datos: Server=PrimarySQLServerName; Initial Catalog=DBName; Integrated Security=True; Failover Partner=SecondSQLServer
  • Para la alta disponibilidad permanente: Server=ListenerName; Initial Catalog=XDdb; Integrated Security=True; MultiSubnetFailover=True

Ejecute los siguientes comandos para establecer las nuevas cadenas de conexión.

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

Nota:

Compruebe que todos los comandos Set-<service>DBConnection anteriores han devuelto un resultado Aceptar. Si el resultado no es correcto para alguno de estos comandos, puede que sea necesario habilitar el registro o el seguimiento para determinar la causa del error de conexión.

Set-LogDBConnection -DBConnection $null y Set-MonitorDBConnection -DBConnection $null devuelven DBUnconfigured en lugar de Aceptar.

Paso 5. Probar las nuevas cadenas de conexión de base

  1. Ejecute los siguientes comandos para verificar la conectividad con la base de datos.

    ## 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. Reinicie Citrix Studio.

Más información

Actualizar cadenas de conexión de base de datos cuando se utilizan soluciones de alta disponibilidad de SQL Server