{"id":42169,"date":"2026-01-08T18:19:10","date_gmt":"2026-01-08T17:19:10","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/?p=42169"},"modified":"2026-01-08T18:22:24","modified_gmt":"2026-01-08T17:22:24","slug":"sql-server-always-on-centralizing-backup-history-across-replicas","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/","title":{"rendered":"SQL Server Always-On: Centralizing Backup History Across Replicas"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\" id=\"h-context\">Context<\/h2>\n\n\n\n<p>Monitoring backups in a SQL Server Always On Availability Group can often feel like a game of hide and seek where the rules change every time you flip a failover switch. On paper, your backup strategy is solid ; you\u2019ve configured your replica priorities and your jobs are running like clockwork. But when you query the backup history to ensure everything is under control, you realize the truth is fragmented.<\/p>\n\n\n\n<p>Because the <code><strong>msdb<\/strong><\/code> database is local to each instance, each replica only knows about the backups it performed itself. If your backups happen on the secondary today and the primary tomorrow, no single node holds the complete story. This leads to inconsistent monitoring reports, &#8220;false positive&#8221; alerts, and a lot of manual jumping between instances just to answer a simple question: <em>&#8220;Are we actually protected with consistent backups?&#8221;<\/em>.<\/p>\n\n\n\n<p>Before we dive deeper, a quick disclaimer for the lucky ones: If you are running SQL Server 2022 and have implemented <em><strong><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/contained-availability-groups-overview?view=sql-server-ver17\">Contained Availability Groups<\/a><\/strong><\/em> you can stop reading here, you are safe. In a Contained AG, the system databases are replicated alongside your data, meaning the backup history is finally unified and follows the group. <\/p>\n\n\n\n<p>For the others, in this post, we\u2019re going to explore how to stop chasing metadata across your cluster. We\u2019ll look at the limitations of the local <code><strong>msdb<\/strong><\/code>, compare different ways to consolidate a unified backup view using <em>Linked Servers<\/em>, <em>OPENDATASOURCE<\/em>, and PowerShell, and see how to build a monitoring query that finally tells the whole truth, regardless of where the backup actually ran.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-traditional-approach\">The traditional approach<\/h2>\n\n\n\n<p>The traditional approach is therefore to query the <code>msdb<\/code> through the AG listener, pointing to the primary replica. Using a simple TSQL query to find the most recent backup, we get the following results.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\nbs.database_name,\nMAX(bs.backup_finish_date) AS LastBackup\nFROM msdb.dbo.backupset bs\nWHERE bs.database_name = 'StackOverflow2010'\nGROUP BY bs.database_name;<\/code><\/pre>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"432\" height=\"62\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png\" alt=\"\" class=\"wp-image-42173\" style=\"aspect-ratio:6.969246281825057;width:412px;height:auto\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png 432w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32-300x43.png 300w\" sizes=\"auto, (max-width: 432px) 100vw, 432px\" \/><\/figure>\n\n\n\n<figure class=\"wp-block-image size-full is-resized\"><img loading=\"lazy\" decoding=\"async\" width=\"420\" height=\"62\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-30.png\" alt=\"\" class=\"wp-image-42171\" style=\"aspect-ratio:6.775901184774389;width:406px;height:auto\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-30.png 420w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-30-300x44.png 300w\" sizes=\"auto, (max-width: 420px) 100vw, 420px\" \/><\/figure>\n\n\n\n<p>As we can see, the two backup dates differ (14:39 being the time the database was created in the AG and 15:15 being the time of the last backup). As a result, if a failover occurs, the main <code>msdb<\/code> will contain incomplete data because the primary <code>msdb<\/code> will be the one on <em>SQLAGVM2<\/em>.<\/p>\n\n\n\n<p>This traditional approach is perfectly acceptable for standalone instances because there is only one source of truth, but in the case of Always-On, we need a more robust solution. Let&#8217;s examine the different possibilities.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-good-old-linked-servers\">The good old Linked Servers<\/h2>\n\n\n\n<p>If you want to keep everything within the SQL Engine, Linked Servers are your go-to tool. The idea is simple: from your Primary replica, you reach out to the Secondary, query its <code>msdb<\/code>, and union the results with your local data. <\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT\n@@SERVERNAME AS &#091;PrimaryServer],\nbs.database_name,\nMAX(bs.backup_finish_date) AS LastBackup\nFROM msdb.dbo.backupset bs\nWHERE bs.database_name = 'StackOverflow2010'\nGROUP BY bs.database_name\n\nUNION ALL\n\nSELECT\n<strong>'REMOTE_MSDB'<\/strong> AS &#091;ReportingServer],\nbs.database_name,\nMAX(bs.backup_finish_date) AS LastBackup\nFROM <strong>&#091;REMOTE_MSDB]<\/strong>.msdb.dbo.backupset bs\nWHERE bs.database_name = 'StackOverflow2010'\nGROUP BY bs.database_name;<\/code><\/pre>\n\n\n\n<p>On paper, the best way to secure a Linked Server is to use the <strong><em><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/relational-databases\/linked-servers\/create-linked-servers-sql-server-database-engine?view=sql-server-ver17\">Self <\/a><\/em><\/strong>option, ensuring that your own permissions are carried over to the next node. It\u2019s the most transparent approach for auditing and security. However, this is where we often hit a silent wall: the <strong><a href=\"https:\/\/techcommunity.microsoft.com\/blog\/askds\/understanding-kerberos-double-hop\/395463\">Double-Hop<\/a><\/strong>. Unless Kerberos delegation is perfectly configured in your domain, NTLM will prevent your identity from traveling to the second replica. You\u2019ll end up with a connection error, not because of a lack of permissions, but because your identity simply couldn&#8217;t make the trip. To determine the type of authentication protocol you are using, use the following query.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT auth_scheme \nFROM sys.dm_exec_connections \nWHERE session_id = @@SPID;<\/code><\/pre>\n\n\n\n<p>To bypass this hurdle, it is common to see <strong><em>Fixed Logins<\/em><\/strong> being used as a pragmatic workaround. But by hardcoding credentials to make the bridge work, we create a permanent, pre-authenticated tunnel. From a security standpoint, this can facilitate <a href=\"https:\/\/www.crowdstrike.com\/en-us\/cybersecurity-101\/cyberattacks\/lateral-movement\/\">lateral movement<\/a> if one instance is ever compromised, a major concern in modern <strong>Zero Trust<\/strong> architectures. Furthermore, it obscures your audit logs, as the remote server only sees the service account instead of the actual user. These hidden complexities and security risks are precisely why many DBAs are now moving toward more decoupled, scalable alternatives.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-the-on-the-fly-connection-opendatasource\">The &#8220;On-the-Fly&#8221; Connection: OPENDATASOURCE<\/h2>\n\n\n\n<p>To address the frustrations of Linked Servers, another T-SQL path often explored is the use of <em>ad hoc <\/em>queries via <strong><em><a href=\"https:\/\/learn.microsoft.com\/en-us\/sql\/t-sql\/functions\/opendatasource-transact-sql?view=sql-server-ver17\">OPENDATASOURCE<\/a><\/em><\/strong>.<br>The concept is tempting: instead of building a permanent bridge (Linked Server), you use a temporary ladder ; <code>OPENDATASOURCE<\/code> allows you to define a connection string directly inside your T-SQL statement, reaching out to a remote replica only for the duration of that specific query. It feels lightweight and dynamic because it requires no pre-configured server objects.<\/p>\n\n\n\n<p>In theory, you would use it like this to pull backup history from your secondary node:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>SELECT \n    @@SERVERNAME AS &#091;Source Server],\n    bs.database_name, \n    MAX(bs.backup_finish_date) AS LastBackup\nFROM OPENDATASOURCE('MSOLEDBSQL', 'Data Source=SQLAGVM1,1432;Integrated Security=SSPI').msdb.dbo.backupset bs\nWHERE bs.database_name = 'StackOverflow2010'\nGROUP BY bs.database_name;<\/code><\/pre>\n\n\n\n<p>However, if the environment is not properly configured, an error will occur immediately.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>Msg 15281, Level 16, State 1, Line 1\nSQL Server blocked access to STATEMENT 'OpenRowset\/OpenDatasource' of component 'Ad Hoc Distributed Queries' because this component is turned off as part of the security configuration for this server. A system administrator can enable the use of 'Ad Hoc Distributed Queries' by using sp_configure. <\/code><\/pre>\n\n\n\n<p>By default, SQL Server locks this door. It is a protective measure to prevent users from using the SQL instance as a jumping point to query any other server on the network. To get past this error, a sysadmin must explicitly enable <strong>Ad Hoc Distributed Queries<\/strong>. This requires tweaking the advanced configuration of the instance.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>EXEC sp_configure 'show advanced options', 1;\nRECONFIGURE;\nGO\nEXEC sp_configure 'Ad Hoc Distributed Queries', 1;\nRECONFIGURE;\nGO<\/code><\/pre>\n\n\n\n<p>Once these options have been reconfigured, access to the remote <code>msdb<\/code> is finally possible.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"358\" height=\"60\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-33.png\" alt=\"\" class=\"wp-image-42175\" srcset=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-33.png 358w, https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-33-300x50.png 300w\" sizes=\"auto, (max-width: 358px) 100vw, 358px\" \/><\/figure>\n\n\n\n<p>While we successfully made <code>OPENDATASOURCE<\/code> work, the trade-offs are significant. We have ended up with a solution that is brittle, difficult to maintain, and a potential liability:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Hardcoding &amp; Maintenance:<\/strong> Every replica requires a manually adapted connection string. If a server is renamed, a port is migrated, or a password expires, the entire monitoring logic collapses.<\/li>\n\n\n\n<li><strong>Security &amp; Shadow IT Risk:<\/strong> Enabling <em>Ad Hoc Distributed Queries<\/em> opens a permanent hole in your instance. You aren&#8217;t just allowing your script to run; you are allowing any sysadmin to connect to any external server, creating a <em>ghost <\/em>feature that can be easily misused.<\/li>\n<\/ul>\n\n\n\n<p>In short, we are fighting the SQL engine\u2019s security defaults just to get a simple timestamp. For a truly robust and scalable solution, it is time to look beyond T-SQL.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-here-comes-the-superhero-powershell\">Here comes the superhero Powershell<\/h2>\n\n\n\n<p>PowerShell steps in as the ultimate lifesaver, delivering high-level automation and pure execution simplicity. It allows you to centralize and control your scripts from an external management server, piloting your entire fleet remotely without cluttering your SQL instances.<\/p>\n\n\n\n<p>By leveraging the power of <strong><a href=\"https:\/\/dbatools.io\/\">dbatools<\/a><\/strong>, we shatter the limitations of traditional T-SQL. We gain dynamic flexibility and enhanced security by bypassing risky configurations, all while maintaining total control over how we manipulate the retrieved data. The security gain does not come from PowerShell itself, but from removing risky SQL Server surface area features and centralizing access control on a hardened management host. This works because PowerShell establishes <strong>direct connections<\/strong> from your management host to each replica. This bypasses the NTLM double-hop issue entirely, as your identity is never passed between servers, removing any need for complex Kerberos delegation or risky fixed logins.<\/p>\n\n\n\n<p>Here is how to put this into practice. By using the Availability Group <strong>Listener<\/strong> as your unique gateway, you can dynamically discover the cluster topology and query all member nodes.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Listener = 'SQLLISTENER,1432'\n$TargetDB = 'StackOverflow2010'\n\ntry {\n    $Nodes = Invoke-DbaQuery -SqlInstance $Listener -Database 'master' -Query \"SELECT replica_server_name FROM sys.dm_hadr_availability_replica_cluster_states\" \n    $BackupQuery = \"SELECT SERVERPROPERTY('ServerName') as &#091;InstanceName], MAX(backup_finish_date) as &#091;LastBackup] FROM msdb.dbo.backupset WHERE database_name = '$TargetDB' GROUP BY database_name\"\n    write-output $Nodes\n    $Results = foreach ($Node in $Nodes.replica_server_name) {\n        write-output $Node\n        Invoke-DbaQuery -SqlInstance $Node -Database 'msdb' -Query $BackupQuery -ErrorAction SilentlyContinue\n    }\n\n    $Results | Where-Object { $_.LastBackup } | Sort-Object LastBackup -Descending | Select-Object -First 1 | Format-Table -AutoSize\n}\ncatch {\n    Write-Error \"Error : $($_.Exception.Message)\"\n}<\/code><\/pre>\n\n\n\n<p>This script is just a first step, but it lays the foundation for truly scalable infrastructure management. By shifting the logic to PowerShell instead of overloading our SQL instances, we achieve a robust and extensible method capable of handling large Always-On ecosystems without additional manual effort.<\/p>\n\n\n\n<p>In this example, the listener name is hardcoded for the sake of clarity. However, the true strength of this approach lies in its ability to work behind the scenes with a dynamic inventory. In a <strong>Production <\/strong>environment, you would typically query a <em>CMDB <\/em>or a centralized configuration file to automatically populate the list of instances. This transforms a simple check into a silent, reliable automation that adapts seamlessly as your SQL environment evolves.<\/p>\n\n\n\n<p>While we wrote the T-SQL manually in this example for the sake of clarity, it is worth noting that <em>dbatools <\/em>offers an even more streamlined approach with the <code>Get-DbaBackupHistory<\/code> command. This native function eliminates the need for manual queries entirely, returning rich metadata objects that are ready to be filtered and aggregated across your entire fleet.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$Nodes.replica_server_name | Get-DbaBackupHistory -Database 'StackOverflow2010' | Sort-Object End -Descending | Select-Object -First 1<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-final-thoughts-taking-control-of-the-always-on-fleet\">Final Thoughts: Taking Control of the Always-On Fleet<\/h2>\n\n\n\n<p>To wrap up, remember that technical skills are only as good as the management strategy behind them. Transitioning away from legacy methods toward a PowerShell-driven approach is about gaining control over your environment. Here is what you should keep in mind:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Beyond T-SQL Boundaries:<\/strong> While <em>Linked Servers<\/em> or <em>OPENDATASOURCE<\/em> might work for quick fixes, they quickly become bottlenecks and security risks in hardened infrastructures.<\/li>\n\n\n\n<li><strong>Object-Oriented Efficiency:<\/strong> By using PowerShell and <em>dbatools<\/em>, you stop managing raw text and start handling objects. This allows you to effortlessly filter, sort, and aggregate data from multiple Always-On nodes to extract a single, reliable source of truth.<\/li>\n\n\n\n<li><strong>Smarter Security:<\/strong> Running queries externally via dedicated management shells ensures you maintain a high security posture without needing to enable high-risk surface area features on your SQL instances.<\/li>\n<\/ul>\n\n\n\n<p><strong>The real game-changer is the Central Management Server.<\/strong> By centralizing your logic on a dedicated administration machine, you stop scattering scripts across every instance. This server becomes your orchestrator: it pulls from your inventory (<em>CMDB<\/em>, central tables), broadcasts tasks across your entire fleet, and consolidates the results. This is exactly the approach we take at <strong>dbi services<\/strong> to manage the extensive SQL Server environments under our care. We leverage PowerShell and the <em>dbatools <\/em>module as the backbone of our scripting architecture. This allows us to collect data in the most comprehensive and optimized way possible, ensuring we deliver top-tier service to our clients.<\/p>\n\n\n\n<p>This is how you move from artisanal, server-by-server management to an industrial-grade automation capable of piloting hundreds of instances with the same simplicity as a single one.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.<\/p>\n","protected":false},"author":157,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,149,99],"tags":[466,202,51],"type_dbi":[],"class_list":["post-42169","post","type-post","status-publish","format-standard","hentry","category-database-administration-monitoring","category-security","category-sql-server","tag-alwayson","tag-backup","tag-sql-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server Always-On: Centralizing Backup History Across Replicas dbi Blog<\/title>\n<meta name=\"description\" content=\"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server Always-On: Centralizing Backup History Across Replicas\" \/>\n<meta property=\"og:description\" content=\"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-08T17:19:10+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-01-08T17:22:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png\" \/>\n\t<meta property=\"og:image:width\" content=\"432\" \/>\n\t<meta property=\"og:image:height\" content=\"62\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Louis Tochon\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Louis Tochon\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/\"},\"author\":{\"name\":\"Louis Tochon\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/e4195b0cb120295b3407a502c23e75b6\"},\"headline\":\"SQL Server Always-On: Centralizing Backup History Across Replicas\",\"datePublished\":\"2026-01-08T17:19:10+00:00\",\"dateModified\":\"2026-01-08T17:22:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/\"},\"wordCount\":1559,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2025\\\/12\\\/image-32.png\",\"keywords\":[\"AlwaysOn\",\"Backup\",\"SQL Server\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Security\",\"SQL Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/\",\"name\":\"SQL Server Always-On: Centralizing Backup History Across Replicas dbi Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2025\\\/12\\\/image-32.png\",\"datePublished\":\"2026-01-08T17:19:10+00:00\",\"dateModified\":\"2026-01-08T17:22:24+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/e4195b0cb120295b3407a502c23e75b6\"},\"description\":\"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2025\\\/12\\\/image-32.png\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2025\\\/12\\\/image-32.png\",\"width\":432,\"height\":62},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-always-on-centralizing-backup-history-across-replicas\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server Always-On: Centralizing Backup History Across Replicas\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\",\"name\":\"dbi Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/e4195b0cb120295b3407a502c23e75b6\",\"name\":\"Louis Tochon\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g\",\"caption\":\"Louis Tochon\"},\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/author\\\/louistochon\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server Always-On: Centralizing Backup History Across Replicas dbi Blog","description":"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server Always-On: Centralizing Backup History Across Replicas","og_description":"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/","og_site_name":"dbi Blog","article_published_time":"2026-01-08T17:19:10+00:00","article_modified_time":"2026-01-08T17:22:24+00:00","og_image":[{"width":432,"height":62,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png","type":"image\/png"}],"author":"Louis Tochon","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Louis Tochon","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/"},"author":{"name":"Louis Tochon","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/e4195b0cb120295b3407a502c23e75b6"},"headline":"SQL Server Always-On: Centralizing Backup History Across Replicas","datePublished":"2026-01-08T17:19:10+00:00","dateModified":"2026-01-08T17:22:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/"},"wordCount":1559,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png","keywords":["AlwaysOn","Backup","SQL Server"],"articleSection":["Database Administration &amp; Monitoring","Security","SQL Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/","name":"SQL Server Always-On: Centralizing Backup History Across Replicas dbi Blog","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png","datePublished":"2026-01-08T17:19:10+00:00","dateModified":"2026-01-08T17:22:24+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/e4195b0cb120295b3407a502c23e75b6"},"description":"Replace brittle T-SQL links and manual checks with a central PowerShell orchestrator to reliably manage Always On backup data at scale.","breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2025\/12\/image-32.png","width":432,"height":62},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-always-on-centralizing-backup-history-across-replicas\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server Always-On: Centralizing Backup History Across Replicas"}]},{"@type":"WebSite","@id":"https:\/\/www.dbi-services.com\/blog\/#website","url":"https:\/\/www.dbi-services.com\/blog\/","name":"dbi Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.dbi-services.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/e4195b0cb120295b3407a502c23e75b6","name":"Louis Tochon","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ce0ee48c64e763e6c4076e21c80729d15bc4493288aeb8695125c69082100e10?s=96&d=mm&r=g","caption":"Louis Tochon"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/louistochon\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42169","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/users\/157"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=42169"}],"version-history":[{"count":30,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42169\/revisions"}],"predecessor-version":[{"id":42352,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/42169\/revisions\/42352"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=42169"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=42169"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=42169"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=42169"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}