在以下脚本中,将重新连接 SQL 数据库定义为 DDC(Delivery Controller)。这是一项需要谨慎操作的任务,因此在执行之前强烈建议你采取适当的风险管理措施,例如备份数据库或创建快照,以便在出现问题时进行恢复。请仔细阅读以下风险提示,并确保你具备适当的权限和了解相关操作的影响。


重要风险提示: DDC 重新连接 SQL 数据库说明

  1. 在执行此操作之前,请确保你具备管理员权限,并了解该操作对系统的潜在影响。
  2. 此操作将重新定义 DDC 与 SQL 数据库之间的连接,可能会导致服务中断、数据丢失或其他不可预测的问题。
  3. 在执行此操作之前,强烈建议你在操作之前对数据库进行完整备份或创建系统快照。
  4. 重新连接 SQL 数据库是一项高风险操作,请确保你了解如何应对潜在问题,并准备好进行必要的故障排除和修复。
  5. 如果你对 SQL 数据库的配置和连接参数不确定,请勿继续执行此操作,以免造成严重损坏或无法恢复的状态。
  6. 在执行此操作期间,请确保没有用户正在使用 DDC 服务,并将其通知到相关人员以避免服务中断。
  7. 请明智地评估执行此操作的必要性,仅在确保系统安全的情况下继续进行。

注意:任何由于执行此操作而导致的问题或损失将完全由执行者承担责任。

asnp citrix.*
function conddc {
    param(
        [string]$sqlname,
        [string]$sitename
    )
    
    $ServerName = "${sqlname}"
    $SiteDBName = "Citrix${sitename}Site"
    $LogDBName = "Citrix${sitename}Logging"
    $MonitorDBName = "Citrix${sitename}Monitoring"
    $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
    Set-HypDBConnection -DBConnection $csSite
    Set-ProvDBConnection -DBConnection $csSite
    Set-AppLibDBConnection -DBConnection $csSite
    Set-OrchDBConnection -DBConnection $csSite
    Set-TrustDBConnection -DBConnection $csSite
    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
}
function testsql{
   	#测试新的数据库连接字符串
    ## Load the Citrix snap-ins
    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
}
function endsql {
    Set-ConfigDBConnection -DBConnection $null -Force
    Set-AcctDBConnection -DBConnection $null -Force
    Set-AnalyticsDBConnection -DBConnection $null -Force
    Set-AppLibDBConnection -DBConnection $null -Force
    Set-OrchDBConnection -DBConnection $null -Force
    Set-TrustDBConnection -DBConnection $null -Force
    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
}

do {
    echo "你正在运行ddc连接数据库操作,请根据功能序号选择"
    echo "1 重新定义DDC连接数据库,使用集成SQL数据连接"
    echo "2 重新定义DDC连接数据库,使用独立SQL数据连接"
    echo "3 清空DDC数据库的连接配置信息,建议先执行此操作后,再执行上述1或2操作"
    echo "4 测试DDC连接SQL数据库状态"
    echo "5 退出程序运行"
    $num = [int](Read-Host "请输入你选择的序号")

    if ($num -eq 1) {
        $sqlname = Read-Host "请输入集成SQL数据库的DDC主机名,例如CVAD-DDC01"
        $sitename = Read-Host "请输入DDC站点名称,例shenzhen"
        $sqlname = $sqlname + "\sqlexpress"
        conddc -sqlname $sqlname -sitename $sitename
    } elseif ($num -eq 2) {
        $sqlname = Read-Host "请输入独立SQL数据库FQDN,例如SQLVIP.citrixlab.local"
        $sitename = Read-Host "请输入DDC站点名称,例shenzhen"
        conddc -sqlname $sqlname -sitename $sitename
    } elseif ($num -eq 3) {
        endsql
    } elseif ($num -eq 4) {
        testsql
        sleep 3
    } elseif ($num -eq 5) {
        break
    } else {
    	Write-Host "求求你别乱输入好吧,请选择对应的功能输入" -ForegroundColor Red
    }
} while ($true)