Conceptos avanzados

Actualizar las cadenas de conexión de la base de datos al usar soluciones de alta disponibilidad de SQL Server

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

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 demás scripts.
  • Change_XD_Failover_Partner_v1.ps1: Actualiza (añade, cambia o elimina) el socio de conmutación por error. Este script solicita la ubicación del socio de conmutación por error (FQDN) para cada base de datos. (Proporcionar un socio de conmutación por error en blanco elimina el socio de conmutación por error. También puede usar la opción ClearPartner para eliminar un socio). No establezca el socio 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 ciertos servicios de Citrix estén en funcionamiento y, a continuación, actualiza esos servicios en el orden correcto en todos los Controllers del sitio. Encierre la información de la cadena de conexión de cada base de datos entre comillas.
  • Change_XD_To_MultiSubnetFailover.ps1: Alterna la adición y eliminación de MultiSubnetFailover=true. Si utiliza Grupos de disponibilidad Always On, 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 tanto para entornos de subred única como de varias subredes. Ejecute este script una vez para añadir la opción. Si debe eliminar 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 localhost porque algo ha salido mal. Al restablecer las cadenas de conexión a nulo, este script coloca el Controller en un estado “inicial”. Si ejecuta Studio después de ejecutar este script, se le preguntará si desea crear un sitio o unirse a uno existente. Esto es útil si algo ha salido mal y se necesita un restablecimiento. Después del restablecimiento, puede intentar de nuevo configurar las cadenas de conexión utilizando Change_XD_To_ConnectionString.ps1.

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

Importante:

Este artículo fue escrito y los scripts fueron probados 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 de sitio completo para ejecutar los scripts.
  • Ejecute los scripts en la ventana de 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, la MMC que Studio utiliza en máquinas con Windows 7 o 2008 R2 contiene una versión anterior de .NET, por lo que es posible que vea el error “Keyword not supported: multisubnetfailover” al seleccionar Configuración en el panel de navegación de Studio. En tales casos, aplique un parche o actualice de la siguiente manera:

  • Para .NET 3.5 SP1, aplique el parche con http://support.microsoft.com/kb/2654347.
  • Para .NET 4.0, actualice como mínimo a la versión 4.0.2. Se recomienda la 4.0.3: http://support.microsoft.com/kb/2600211.

Luego, use el script Change_XD_To_MultiSubnetFailover.ps1 para actualizar las cadenas de conexión de la 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 esté en la misma carpeta que el script que ejecuta, ya que el script que ejecuta utiliza funciones de DBConnectionStringFuncs.ps1.
  4. Ejecute el script en un Controller.

Si quiere configurar su sitio para la conmutación por error de subred múltiple, solo necesita ejecutar el script Change_XD_To_MultiSubnetFailover.ps1. (Recuerde: asegúrese de que el script DBConnectionStringFuncs.ps1 esté en la misma carpeta).

Consejos:

  • 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 Server y Data Source son sinónimos.
  • Si quiere manipular las cadenas de conexión, vea cómo los scripts Change\_XD\_ usan las funciones en DBConnectionStringFuncs.ps1.

Actualizar cadenas manualmente

Para actualizar las cadenas manualmente, ejecute los cmdlets de 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 usuario, haga clic en las tres bases de datos de Citrix: base de datos del sitio, base de datos de supervisión y base de datos de registro.
  4. Para cada una de las tres bases de datos de Citrix, agregue la cuenta de equipo de Delivery Controller™ a las distintas funciones de la 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. Recupere 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. Elimine 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 aparece 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 original de comandos para confirmar que la conexión existente se ha eliminado correctamente.

Los siguientes cmdlets 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. Especifique las nuevas cadenas de conexión de base de datos

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

  • Para la cadena de conexión de SQL Server independiente: Server=SQLServerName; Initial Catalog=DBName; Integrated Security=True
  • Para la cadena de conexión de duplicación de base de datos: Server=PrimarySQLServerName; Initial Catalog=DBName; Integrated Security=True; Failover Partner=SecondSQLServer
  • Para Always On High Availability: 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:

Verifique que todos los comandos Set-<service>DBConnection anteriores hayan devuelto un resultado de OK. Si el resultado es diferente de OK para cualquiera de estos comandos, podría ser necesario habilitar el registro o el seguimiento para determinar la causa del error de conexión.

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

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

  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 las cadenas de conexión de la base de datos al usar soluciones de alta disponibilidad de SQL Server