Conceptos avanzados

Actualizar cadenas de conexión de bases de datos al utilizar soluciones de alta disponibilidad de SQL Server

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

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 la información de cadena de conexión para cada base de datos entre comillas.
  • Change_XD_To_MultiSubnetFailover.ps1: Cambia la adición y eliminación de MultiSubnetFailover=true. Si utiliza Grupos de disponibilidad Siempre activado, 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 subred única 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 salido mal y se necesita un reinicio. Después del restablecimiento, puede intentar de nuevo establecer las cadenas de conexión mediante Change_xd_to_connectionString.ps1.

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

Requisitos y consideraciones

  • Debe ser un administrador del sitio completo para ejecutar los scripts.
  • Ejecute los scripts en la ventana de PowerShell de un Controller. PowerShell v3 es obligatorio.
  • Los componentes principales de XenApp y XenDesktop deben estar instalados y el sitio está 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 tales casos, parche o 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 de PowerShell de XenApp y XenDesktop.

Paso 1: Mover bases de datos SQL a un servidor SQL diferente y asignar 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 > Inicio de sesión, agregue las cuentas de equipo Delivery Controller. Por ejemplo, CORP\DDC01$.
  3. Al agregar el inicio de sesión SQL, en la página Asignación de usuarios, haga clic en las tres bases de datos Citrix: Base de datos de sitios, Base de datos de supervisión y Base de datos de registro.
  4. Para cada una de las tres bases de datos Citrix, agregue la cuenta de equipo Delivery Controller a los distintos roles 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: Quitar las conexiones de base de datos existentes

En 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 apareciendo los errores, debe reiniciar el servidor. Ejecute de nuevo el conjunto original de comandos para confirmar que la conexión existente se ha eliminado correctamente.

Los cmdlets siguientes deben devolver un resultado vacío:

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

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 $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 cualquiera de estos comandos, puede ser 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 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 cadenas de conexión de bases de datos al utilizar soluciones de alta disponibilidad de SQL Server