{"id":8385,"date":"2016-06-20T15:49:43","date_gmt":"2016-06-20T13:49:43","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/"},"modified":"2016-06-20T15:49:43","modified_gmt":"2016-06-20T13:49:43","slug":"sql-server-2016-alwayson-distributed-availability-groups","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/","title":{"rendered":"SQL Server 2016 AlwaysOn: distributed availability groups"},"content":{"rendered":"<p>This time, I will talk about distributed availability groups. What&#8217;s that? <span style=\"font-family: Calibri\"><span style=\"color: #000000\">In short, a group of availability groups. Sounds good right? But in which <\/span>cases may we <span style=\"color: #000000\">need such architecture? Firstly, let\u2019s say that distributed availability groups will run on the top of two distinct availability groups meaning that they reside on two distinct WSFCs with their own quorum and voting management. Referring to the Microsoft documentation <\/span><\/span><a href=\"https:\/\/msdn.microsoft.com\/en-us\/library\/mt651673.aspx\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1;font-family: Calibri\">here<\/span><\/a><span style=\"font-family: Calibri\"><span style=\"color: #000000\">, we may think that this new feature will be mainly <\/span>used <span style=\"color: #000000\">in DR scenario but I\u2019m not sure to understand Microsoft about this <\/span>sentence:<\/span><\/p>\n<blockquote><p><strong><em>You want the data to continually replicate to the DR site, but you don&#8217;t want a potential network problem or issue at the DR site to bring down your primary site<\/em><\/strong><\/p><\/blockquote>\n<p><span style=\"color: #000000;font-family: Calibri\">Indeed, we don\u2019t need this new feature to avoid a DR site or a network failure bringing down the primary site. We may simply exclude cluster nodes at the DR site for voting. Maybe I missed something here and I will probably go back when I will get more information. <\/span><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">Moreover, I may not image my customer using an additional cluster just only for DR purpose. Supposing that the DR site is costless from SQL Server license perspective, we need to maintain a \u201ccomplex\u201d architecture (WSFC) only for that. <\/span><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">After discussing with one another French MVP Christophe Laporte (<\/span><a href=\"https:\/\/twitter.com\/Conseilit\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1;font-family: Calibri\">@Conseilit<\/span><\/a><span style=\"color: #000000;font-family: Calibri\">), we began to draw some pictures of potential scenarios where using DAG may be a good solution. Firstly, let\u2019s say a customer that have many applications. Some of them may run on the primary site and other ones on the DR site because there is a high latency between the two datacenters. In this specific context, you may implement one availability group on each datacenter for HA purpose and add a distributed availability group for DR recovery.<\/span><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9367 size-medium\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario.jpg\" alt=\"blog 96 - 7 - DAG scenario\" width=\"300\" height=\"211\" \/><\/a><\/p>\n<p><span style=\"font-family: Calibri\"><span style=\"color: #000000\">Let\u2019s say now a big company that bought another business that includes an existing datacenter infrastructure with availability groups used by the old company. They may want to introduce HA + DR <\/span>by using<span style=\"color: #000000\"> a distributed availability group at the both sides without performing any big changes. Of course, we have to keep in mind the cost of such architecture \u2026<\/span><\/span><\/p>\n<p><span style=\"font-family: Calibri\"><span style=\"color: #000000\">Probably one another advantage of distributed availability <\/span>groups <span style=\"color: #000000\">is that the primary replica has only to send log blocks to one primary replica on another availability group. Let\u2019s imagine a traditional implementation with 2 synchronous replicas at the primary site and 4 or maybe 6 asynchronous replicas at the DR site used for scale-out reporting purpose. In this case, even if we are in a situation where all the read-only replicas are asynchronous, the failure of one may impact the primary replica because the transaction <\/span>log file won\u2019t be truncated <span style=\"color: #000000\">by backup log operations until we fix the issue. <\/span><\/span><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-8-DAG-scenario.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9368 size-medium\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-8-DAG-scenario.jpg\" alt=\"blog 96 - 8 - DAG scenario\" width=\"300\" height=\"203\" \/><\/a><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">We may have potentially up to 6 replicas that may lead to transaction log issue management in this specific context. Let\u2019s say now we change the game by including all of the read-only replicas in one specific availability group at the DR site that is included itself in a DAG. The failure of one read-only replica on the DR site may impact only the primary on the DR availability group. <\/span><\/p>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-9-DAG-scenario.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-9369 size-medium\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-9-DAG-scenario.jpg\" alt=\"blog 96 - 9 - DAG scenario\" width=\"300\" height=\"210\" \/><\/a><\/p>\n<p>I believe that others scenarios are possible and we will discover some of them through experience. Please feel free to comment or add your thoughts J<\/p>\n<p>Ok it\u2019s time to implement our first DAG. On my lab environment I implemented two additional virtual machines and then I configured another WSFC that includes my two virtual machines. So I finally get an environment that includes two WSFCs with two nodes on each. The first is already installed and used for direct seeding (see direct seeding at the beginning). We will also leverage direct seeding when implementing a DAG in order to replicate the <em>WideWorldImporters<\/em> between the two availability groups.<\/p>\n<p>But before installing the DAG itself, let\u2019s install the second availability group.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT WIN20123SQL16\\SQL16\n\nUse master;\n\n-- primary replica\nCREATE AVAILABILITY GROUP [testGrp2]   \nFOR    \nREPLICA ON \nN'WIN20123SQL16\\SQL16' \nWITH (ENDPOINT_URL = N'TCP:\/\/WIN20123SQL16.dbi-services.test:5022',  \n    FAILOVER_MODE = MANUAL,  \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n    BACKUP_PRIORITY = 50,   \n    SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL),   \n    SEEDING_MODE = AUTOMATIC)\n,   \nN'WIN20124SQL16\\SQL16' \nWITH (ENDPOINT_URL = N'TCP:\/\/WIN20124SQL16.dbi-services.test:5022',   \n    FAILOVER_MODE =MANUAL,   \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n    BACKUP_PRIORITY = 50,   \n    SECONDARY_ROLE(ALLOW_CONNECTIONS = ALL),   \n    SEEDING_MODE = AUTOMATIC);   \nGO  \n\nALTER AVAILABILITY GROUP [testGrp2]    \nADD LISTENER 'lst-testgrp2' \n( \n\tWITH IP ( ('192.168.5.121', '255.255.255.0') ) , \n\tPORT = 1433);    \nGO \n\n:CONNECT WIN20124SQL16\\SQL16\n\nUSE master;\n\n-- secondary replica\nALTER AVAILABILITY GROUP [testGrp2] JOIN   \nALTER AVAILABILITY GROUP [testGrp2] GRANT CREATE ANY DATABASE  \nGO<\/pre>\n<p><span style=\"color: #000000;font-family: Calibri\">And finally the\u00a0distributed availability group<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT WIN20121SQL16\\SQL16\n\nUSE master;\n\n-- Primary cluster \n--DROP AVAILABILITY GROUP [distributedtestGrp]  \nCREATE AVAILABILITY GROUP [distributedtestGrp]  \nWITH (DISTRIBUTED)   \nAVAILABILITY GROUP ON  \n'testGrp' \nWITH    \n(   \n\tLISTENER_URL = 'tcp:\/\/lst-testgrp:5022',    \n\tAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\tFAILOVER_MODE = MANUAL,   \n\u202f\u202f\u202f\u202fSEEDING_MODE = AUTOMATIC   \n),   \n'testGrp2' \nWITH    \n(   \n\tLISTENER_URL = 'tcp:\/\/lst-testgrp2:5022',   \n\u202f\u202f\u202f\u202fAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\u202f\u202f\u202f\u202fFAILOVER_MODE = MANUAL,   \n\u202f\u202f\u202f\u202fSEEDING_MODE = AUTOMATIC   \n);    \nGO   \n\n:CONNECT WIN20123SQL16\\SQL16\n\nUSE master;\n\n-- secondary cluster\nALTER AVAILABILITY GROUP [distributedtestGrp]   \nJOIN   \nAVAILABILITY GROUP ON  \n'testGrp' \nWITH    \n(   \n\tLISTENER_URL = 'tcp:\/\/lst-testgrp:5022',    \n\u202f\u202f\u202f\u202fAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\u202f\u202f\u202f\u202fFAILOVER_MODE = MANUAL,   \n\u202f\u202f\u202f\u202fSEEDING_MODE = AUTOMATIC   \n),   \n'testGrp2' \nWITH    \n(   \n\tLISTENER_URL = 'tcp:\/\/lst-testgrp2:5022',   \n\u202f\u202f\u202f\u202fAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\u202f\u202f\u202f\u202fFAILOVER_MODE = MANUAL,   \n\u202f\u202f\u202f\u202fSEEDING_MODE = AUTOMATIC   \n);    \nGO<\/pre>\n<p><span style=\"color: #000000;font-family: Calibri\">\u00a0You may notice the special syntax DISTRIBUTED. In addition, the replicas have been replaced by the listeners of each availability group. <\/span><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-13-DAG-SSMS.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9370\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-13-DAG-SSMS.jpg\" alt=\"blog 96 - 13 - DAG SSMS\" width=\"272\" height=\"89\" \/><\/a><\/p>\n<p>One interesting thing here is that we can\u2019t manage the DAG from SSMS. All options are greyed. So let\u2019s have a look at some DMVs.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select \n\tag.name as group_name,\n\tag.is_distributed,\n\tar.replica_server_name as replica_name,\n\tar.endpoint_url,\n\tar.availability_mode_desc,\n\tar.failover_mode_desc,\n\tar.primary_role_allow_connections_desc as allow_connections_primary,\n\tar.secondary_role_allow_connections_desc as allow_connections_secondary,\n\tar.seeding_mode_desc as seeding_mode\nfrom sys.availability_replicas as ar\njoin sys.availability_groups as ag\n\ton ar.group_id = ag.group_id;\ngo<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-12-DMV-config.jpg\">\u00a0<\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-12-DMV-config.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-9371\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-12-DMV-config.jpg\" alt=\"blog 96 - 12 - DMV config\" width=\"1024\" height=\"75\" \/><\/a><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">Replica names are availability group names for DAG. <\/span><\/p>\n<p><span style=\"font-family: Calibri\"><span style=\"color: #000000\">We may get information about direct seeding between the two availability groups in the same manner than <\/span>previously<span style=\"color: #000000\">:<\/span><\/span><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select \n\tag.name as aag_name,\n\tar.replica_server_name,\n\td.name as database_name,\n\thas.current_state,\n\thas.failure_state_desc as failure_state,\n\thas.error_code,\n\thas.performed_seeding,\n\thas.start_time,\n\thas.completion_time,\n\thas.number_of_attempts\nfrom sys.dm_hadr_automatic_seeding as has\njoin sys.availability_groups as ag\n\ton ag.group_id = has.ag_id\njoin sys.availability_replicas as ar\n\ton ar.replica_id = has.ag_remote_replica_id\njoin sys.databases as d\n\ton d.group_database_id = has.ag_db_id<\/pre>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-11-WideWorldImporters.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-9372\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-11-WideWorldImporters.jpg\" alt=\"blog 96 - 11 - WideWorldImporters\" width=\"1024\" height=\"49\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">select \n\tlocal_physical_seeding_id,\n\tremote_physical_seeding_id,\n\tlocal_database_name,\n\t@@servername as local_machine_name,\n\tremote_machine_name,\n\trole_desc as [role],\n\ttransfer_rate_bytes_per_second,\n\ttransferred_size_bytes \/ 1024 as transferred_size_KB,\n\tdatabase_size_bytes \/ 1024 as database_size_KB,\n\tDATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), start_time_utc) as start_time,\n\tDATEADD(mi, DATEDIFF(mi, GETUTCDATE(), GETDATE()), estimate_time_complete_utc) as estimate_time_complete,\n\ttotal_disk_io_wait_time_ms,\n\ttotal_network_wait_time_ms,\n\tis_compression_enabled\nfrom sys.dm_hadr_physical_seeding_stats<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-10-WideWorldImporters.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-9373\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-10-WideWorldImporters.jpg\" alt=\"blog 96 - 10 - WideWorldImporters\" width=\"1024\" height=\"34\" \/><\/a><\/p>\n<p>Ok let\u2019s perform a basic test that consists in creating and inserting data into the <em>WideWorldImporters<\/em> database from each listener.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT lst-testgrp\n\nuse [WideWorldImporters];\n\ncreate table dbo.test (id int identity);\ngo\n\ninsert dbo.test default values;\ngo\n\n:CONNECT lst-testgrp2\n\nuse [WideWorldImporters];\n\ncreate table dbo.test (id int identity);\ngo\n\ninsert dbo.test default values;\ngo<\/pre>\n<p>&nbsp;<\/p>\n<p>Connecting to lst-testgrp&#8230;<br \/>\n(1 row(s) affected)<br \/>\nDisconnecting connection from lst-testgrp&#8230;<\/p>\n<p><strong><em>Connecting to lst-testgrp2&#8230;<\/em><\/strong><br \/>\n<strong><em>Msg 3906, Level 16, State 2, Line 14<\/em><\/strong><br \/>\n<strong><em>Failed to update database &#8220;WideWorldImporters&#8221; because the database is read-only.<\/em><\/strong><br \/>\n<strong><em>Msg 3906, Level 16, State 2, Line 18<\/em><\/strong><br \/>\n<strong><em>Failed to update database &#8220;WideWorldImporters&#8221; because the database is read-only.<\/em><\/strong><br \/>\n<strong><em>Disconnecting connection from lst-testgrp2&#8230;<\/em><\/strong><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">Ok, as expected the availability group in DR is in READ ONLY mode. I\u2019m not able to create or update anything from there. <\/span><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">Let\u2019s perform a last test after switching over the DAG from testGrp to testGrp2. From the primary availability group:<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">ALTER AVAILABILITY GROUP [distributedtestGrp] FORCE_FAILOVER_ALLOW_DATA_LOSS<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-13-DAG-SSMS-after-failover.jpg\">\u00a0<\/a><\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-13-DAG-SSMS-after-failover.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-9374\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-13-DAG-SSMS-after-failover.jpg\" alt=\"blog 96 - 13 - DAG SSMS after failover\" width=\"329\" height=\"279\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">This time I cannot insert data from the first availability group testGrp<\/span><\/p>\n<p>Connecting to lst-testgrp&#8230;<br \/>\n<strong><em>Msg 976, Level 14, State 1, Line 2<\/em><\/strong><br \/>\n<strong><em>The target database, &#8216;WideWorldImporters&#8217;, is participating in an availability group and is currently not accessible for queries. Either data movement is suspended or the availability replica is not enabled for read access. To allow read-only access to this and other databases in the availability group, enable read access to one or more secondary availability replicas in the group.\u00a0 For more information, see the ALTER AVAILABILITY GROUP statement in SQL Server Books Online.<\/em><\/strong><br \/>\n<strong><em>Disconnecting connection from lst-testgrp&#8230;<\/em><\/strong><\/p>\n<p>Connecting to lst-testgrp2&#8230;<br \/>\n(1 row(s) affected)<br \/>\nDisconnecting connection from lst-testgrp2&#8230;<\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">In this blog we have introduced two new features shipped with SQL Server 2016 and availability groups. At a first glance, they seem to be pretty cool features and will extend the scope of availability group capabilities. I think we will see over time the pros and cons during our other tests and implementation at customer shops. If so, other blog posts will coming soon. <\/span><\/p>\n<p><span style=\"color: #000000;font-family: Calibri\">Stay tuned!<\/span><\/p>\n<p>By David Barbarin<\/p>\n","protected":false},"excerpt":{"rendered":"<p>This time, I will talk about distributed availability groups. What&#8217;s that? In short, a group of availability groups. Sounds good right? But in which cases may we need such architecture? Firstly, let\u2019s say that distributed availability groups will run on the top of two distinct availability groups meaning that they reside on two distinct WSFCs [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":8394,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[297,861,790,862,84,566],"type_dbi":[],"class_list":["post-8385","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-availability-groups","tag-dag","tag-disaster-recovery","tag-distributed-availability-group","tag-high-availability","tag-sql-server-2016"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server 2016 AlwaysOn: distributed availability groups<\/title>\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-2016-alwayson-distributed-availability-groups\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2016 AlwaysOn: distributed availability groups\" \/>\n<meta property=\"og:description\" content=\"This time, I will talk about distributed availability groups. What&#8217;s that? In short, a group of availability groups. Sounds good right? But in which cases may we need such architecture? Firstly, let\u2019s say that distributed availability groups will run on the top of two distinct availability groups meaning that they reside on two distinct WSFCs [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-06-20T13:49:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"710\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Microsoft Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Microsoft Team\" \/>\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-2016-alwayson-distributed-availability-groups\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server 2016 AlwaysOn: distributed availability groups\",\"datePublished\":\"2016-06-20T13:49:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\"},\"wordCount\":1031,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg\",\"keywords\":[\"Availability groups\",\"DAG\",\"disaster recovery\",\"distributed availability group\",\"High availability\",\"SQL Server 2016\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\",\"name\":\"SQL Server 2016 AlwaysOn: distributed availability groups\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg\",\"datePublished\":\"2016-06-20T13:49:43+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg\",\"width\":710,\"height\":500},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2016 AlwaysOn: distributed availability groups\"}]},{\"@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\/bfab48333280d616e1170e7369df90a4\",\"name\":\"Microsoft Team\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g\",\"caption\":\"Microsoft Team\"},\"url\":\"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"SQL Server 2016 AlwaysOn: distributed availability groups","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-2016-alwayson-distributed-availability-groups\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2016 AlwaysOn: distributed availability groups","og_description":"This time, I will talk about distributed availability groups. What&#8217;s that? In short, a group of availability groups. Sounds good right? But in which cases may we need such architecture? Firstly, let\u2019s say that distributed availability groups will run on the top of two distinct availability groups meaning that they reside on two distinct WSFCs [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/","og_site_name":"dbi Blog","article_published_time":"2016-06-20T13:49:43+00:00","og_image":[{"width":710,"height":500,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"8 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server 2016 AlwaysOn: distributed availability groups","datePublished":"2016-06-20T13:49:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/"},"wordCount":1031,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg","keywords":["Availability groups","DAG","disaster recovery","distributed availability group","High availability","SQL Server 2016"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/","name":"SQL Server 2016 AlwaysOn: distributed availability groups","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg","datePublished":"2016-06-20T13:49:43+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-96-7-DAG-scenario-1.jpg","width":710,"height":500},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2016-alwayson-distributed-availability-groups\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2016 AlwaysOn: distributed availability groups"}]},{"@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\/bfab48333280d616e1170e7369df90a4","name":"Microsoft Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/c44a1a792c059f24055763aa77d80a244467f6eef724a8bd13db8d4a350b7a4c?s=96&d=mm&r=g","caption":"Microsoft Team"},"url":"https:\/\/www.dbi-services.com\/blog\/author\/microsoft-team\/"}]}},"_links":{"self":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8385","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\/26"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/comments?post=8385"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/8385\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/8394"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=8385"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=8385"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=8385"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=8385"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}