gpt4 book ai didi

sql-server - 如何在 Linux 上跨可用性组副本同步 SQL Server 代理作业?

转载 作者:行者123 更新时间:2023-12-05 04:59:16 26 4
gpt4 key购买 nike

我有两个在 Linux 上运行的 SQL Server 2019 实例。这两个实例都包含一个使用 AlwaysOn 可用性组同步的数据库。数据库中的数据是同步的,但问题是 SQL 代理作业不是数据库本身的一部分。

因此,当我在主副本上创建 SQL Server 代理作业时,此配置不会复制到辅助副本。因此,在创建每个工作之后,我总是还必须去中学并在那里创建工作。而且我必须一直跟踪我所做的所有更改。

当使用可用性组时,是否有一种内置方法可以自动执行 Linux 上 SQL Server 作业的这种跨副本同步?跨 AG 副本的作业同步似乎应该已经被 SQL Server/SQL Server Agent 工具原生支持,但我从 Microsoft 找不到任何东西,只有一个名为 DBA Tools 的第三方工具。我可以用它在 PowerShell 中编写自己的自动化脚本。

最佳答案

dbatools 可以同步它们,但我还没有在 Linux 上运行的 AG 上尝试过。让我知道它是否有效!第一个参数是您的 AG 名称,第二个参数是您集群的虚拟网络名称。

param($AvailabilityGroup, $SqlInstance)
try {
$replicas = Get-DbaAgReplica -AvailabilityGroup $AvailabilityGroup -SqlInstance $SqlInstance
$primary = $replicas | Where-Object Role -EQ Primary | Select-Object -ExpandProperty Name
$secondaries = $replicas | Where-Object Role -EQ Secondary | Select-Object -ExpandProperty Name
$primaryInstanceConnection = Connect-DbaInstance $primary -ClientName 'ScriptBorrowedFromStackOverFlow'
$secondaries | ForEach-Object {
$secondaryInstanceConnection = Connect-DbaInstance $_ -ClientName 'ScriptBorrowedFromStackOverFlow'
Copy-DbaAgentJob -Source $primaryInstanceConnection -Destination $secondaryInstanceConnection -Force
}
}
catch {
$msg = $_.Exception.Message
Write-Error "Error while syncing jobs for Availability Group '$($AvailabilityGroup): $msg'"
}

关于sql-server - 如何在 Linux 上跨可用性组副本同步 SQL Server 代理作业?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63591215/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com