Conceptos avanzados
Gracias por los comentarios

Este artículo ha sido traducido automáticamente. (Aviso legal)

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

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

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

Si ve un mensaje de error, debe reiniciar todos los servicios de Citrix.

Get-Service Citrix* | Stop-Service -Force Get-Service Citrix* | Start-Service

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

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

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

Más información

La versión oficial de este contenido está en inglés. Para mayor comodidad, parte del contenido de la documentación de Cloud Software Group solo tiene traducción automática. Cloud Software Group no puede controlar el contenido con traducción automática, que puede contener errores, imprecisiones o un lenguaje inadecuado. No se ofrece ninguna garantía, ni implícita ni explícita, en cuanto a la exactitud, la fiabilidad, la idoneidad o la precisión de las traducciones realizadas del original en inglés a cualquier otro idioma, o que su producto o servicio de Cloud Software Group se ajusten a cualquier contenido con traducción automática, y cualquier garantía provista bajo el contrato de licencia del usuario final o las condiciones de servicio, o cualquier otro contrato con Cloud Software Group, de que el producto o el servicio se ajusten a la documentación no se aplicará en cuanto dicha documentación se ha traducido automáticamente. Cloud Software Group no se hace responsable de los daños o los problemas que puedan surgir del uso del contenido traducido automáticamente.
Actualizar cadenas de conexión de base de datos cuando se utilizan soluciones de alta disponibilidad de SQL Server