{"id":9756,"date":"2017-02-08T20:04:23","date_gmt":"2017-02-08T19:04:23","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/"},"modified":"2023-07-18T07:37:25","modified_gmt":"2023-07-18T05:37:25","slug":"sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/","title":{"rendered":"SQL Server AlwaysOn &#8211; Distributed availability groups, read-only with round-robin capabilities"},"content":{"rendered":"<p><span style=\"color: #000000; font-family: Calibri;\">This blog post comes from a very interesting discussion with one of my friends about the read-only capabilities of secondary replicas in the context of distributed availability groups. Initially, distributed availability groups are designed to address D\/R scenarios and some migration scenario types as well. I already discussed about of one possible migration scenario <\/span><a href=\"http:\/\/dbi-services.com\/blog\/sql-server-2016-distributed-availability-groups-and-cross-cluster-migration\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">here<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\">. However, we may also take advantage of using secondary replicas as read-only in Reporting Scenarios (obviously after making an assessment of whether the cost is worth it.). In addition, if you plan to introduce scale-out with secondary replicas (even with asynchronous replication) you may consider to use distributed availability groups and <\/span><a href=\"http:\/\/dbi-services.com\/blog\/sql-server-2016-distributed-availability-groups-and-cascaded-replicas\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">cascading feature<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\"> which will address network bandwidth overhead especially if your cross-datacenter link is not designed to handle heavily replication workload. Considering this last scenario, my friend\u2019s motivation (<\/span><a href=\"http:\/\/www.concatskills.com\/category\/sql-server\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">Sarah Bessard<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\">) was to assess distributed availability groups in the replacement of SQL Server replication.<\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">As a reminder, SQL Server 2016 provides new round-robin feature with secondary read-only replicas and extending it by including additional replicas from another availability group seems to be a good idea. But here things become more complicated because transparent redirection and round-robin features sound promising but in fact let\u2019s see if it works when distributed availability group comes into play.<\/span><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Let\u2019s <\/span>have a<span style=\"color: #000000;\"> demo on my lab environment. So for the moment two separate availability groups which run on the top of their own Windows Failover Cluster \u2013 respectively AdvGrp and AdvGrpDR <\/span><\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-14739 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401.jpg\" alt=\"blog 116 - 01 - distributed ag - archi\" width=\"550\" height=\"395\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">At this stage, we will focus only on my second availability group AdvDrGrp. Firstly, I configured read-only routes for my 4 replicas and here the result:<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">SELECT \n\tr.replica_server_name,\n\tr.read_only_routing_url,\n\tg.name AS group_name\nFROM \n\tsys.availability_replicas AS r\nJOIN \n\tsys.availability_groups AS g ON r.group_id = g.group_id\nWHERE \n\tg.name = N'AdvGrpDR'\nORDER BY \n\tr.replica_server_name;\n\nselect \n\tr.replica_server_name AS primary_replica,\n\tr.read_only_routing_url,\n\trl.routing_priority,\n\tr2.replica_server_name AS read_only_secondary_replica,\n\tr2.secondary_role_allow_connections_desc,\n\tg.name AS availability_group\nFROM \n\tsys.availability_read_only_routing_lists AS rl\nJOIN \n\tsys.availability_replicas AS r ON rl.replica_id = r.replica_id\nJOIN \n\tsys.availability_replicas AS r2 ON rl.read_only_replica_id = r2.replica_id\nJOIN \n\tsys.availability_groups AS g ON g.group_id =  r.group_id\nWHERE \n\tg.name = N'AdvGrpDR'\nORDER BY \n\tprimary_replica, availability_group, routing_priority;\nGO<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14741\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-1-distributed-ag-ro-RO-config.jpg\" alt=\"blog 116 - 1 - distributed ag ro - RO config\" width=\"871\" height=\"298\" \/><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">URL read-only routes and preferred replicas are defined for all the replicas. I defined round-robin configuration for replicas WIN20161SQL16\\SQL16 to WIN20163SQL16\\SQL16 whereas the last one is configured with a preference order (WIN20163SQL16\\SQL16 first and WIN20164SQL16\\SQL16 if the previous one is not available). <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">After configuring read-only routes, I decided to check if round-robin comes into play before implementing my distributed availability group. Before running my test I also implemented a special extended event which includes read-only route events as follows:<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">CREATE EVENT SESSION [alwayson_ro] \nON SERVER \nADD EVENT sqlserver.hadr_evaluate_readonly_routing_info,\nADD EVENT sqlserver.read_only_route_complete,\nADD EVENT sqlserver.read_only_route_fail\nADD TARGET package0.event_file ( SET filename=N'alwayson_ro' ),\nADD TARGET package0.ring_buffer;<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\">My test included a basic command based on SQLCMD and \u2013K READONLY special parameter as follows:<\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14742\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-2-distributed-ag-ro-RO-test-e1486583281237.jpg\" alt=\"blog 116 - 2 - distributed ag ro - RO test\" width=\"800\" height=\"286\" \/><\/span><\/p>\n<p>According to the above output we may claim that my configuration is well configured. We may also double check by looking at the extend event output<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14743\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-3-distributed-ag-ro-xe-ro-output.jpg\" alt=\"blog 116 - 3 - distributed ag ro - xe ro output\" width=\"727\" height=\"62\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">But now let\u2019s perform the same test after implementing my distributed availability group. The script I used was as follows:<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT WIN20161SQL16\\SQL16\n \nUSE [master];\nGO\n \n-- Primary cluster \nCREATE AVAILABILITY GROUP [AdvDistGrp]  \nWITH (DISTRIBUTED)   \nAVAILABILITY GROUP ON \n'AdvGrp'\nWITH   \n(   \n    LISTENER_URL = 'tcp:\/\/lst-advgrp.dbi-services.test:5022',    \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n    FAILOVER_MODE = MANUAL,   \n\tSEEDING_MODE = AUTOMATIC   \n),   \n'AdvGrpDR'\nWITH   \n(   \n    LISTENER_URL = 'tcp:\/\/lst-advdrgrp.dbi-services.test:5022',   \n\tAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\tFAILOVER_MODE = MANUAL,   \n\tSEEDING_MODE = AUTOMATIC   \n);    \nGO   \n \n\n:CONNECT WIN20163SQL16\\SQL16\n \nUSE [master];\nGO\n \n-- secondary cluster\nALTER AVAILABILITY GROUP [AdvDistGrp]   \nJOIN  \nAVAILABILITY GROUP ON \n'AdvGrp'\nWITH   \n(   \n    LISTENER_URL = 'tcp:\/\/lst-advgrp.dbi-services.test:5022',    \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n    FAILOVER_MODE = MANUAL,   \n\tSEEDING_MODE = AUTOMATIC   \n),   \n'AdvGrpDR'\nWITH   \n(   \n    LISTENER_URL = 'tcp:\/\/lst-advdrgrp.dbi-services.test:5022',   \n\tAVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,   \n\tFAILOVER_MODE = MANUAL,   \n\tSEEDING_MODE = AUTOMATIC   \n);    \nGO<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14744\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-0-distributed-ag-ro-archi.jpg\" alt=\"blog 116 - 0 - distributed ag ro - archi\" width=\"727\" height=\"334\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Performing the previous test after applying the new configuration gives me a different result this time.<\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14747\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-4-distributed-ag-ro-RO-test-2-e1486583679807.jpg\" alt=\"blog 116 - 4 - distributed ag ro - RO test 2\" width=\"800\" height=\"287\" \/><\/span><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">It seems that the round-robin capability is not <\/span>correctly <span style=\"color: #000000;\">performed although I used the same read-only routes configuration. In the same way, taking a look at the <\/span>extended<span style=\"color: #000000;\"> event output gave me no results. It seems that transparent redirection and round-robin features from the listener did not come into play this time. <\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Let\u2019s perform a last test which includes moving AdvDrGrp availability to another replica to confirm transparent redirection does not work as we may expect <\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT WIN20164SQL16\\SQL16\n\nALTER AVAILABILITY GROUP AdvGrpDR FAILOVER;<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-14745\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-5-distributed-ag-ro-RO-test-3-e1486583491764.jpg\" alt=\"blog 116 - 5 - distributed ag ro - RO test 3\" width=\"800\" height=\"272\" \/><\/span><\/p>\n<p>Same output than previously. The AdvDrGrp availability group has moved from WIN20163SQL16\\SQL16 replica to WIN20164SQL16\\SQL16 replica and the connection reached out the new defined primary of the second availability group (secondary role from the distributed availability group perspective) meaning we are not redirected on one of defined secondaries.<\/p>\n<p>At this stage, it seems that we will have to implement our own load balancing component \u2013 whatever it is \u2013 in order to benefit from all the secondary replicas and read-only features on the second availability group. Maybe one feature that Microsoft may consider as improvement for the future.<\/p>\n<p>Happy high availability moment!<\/p>\n<p><span style=\"float: none; background-color: #ffffff; color: #333333; cursor: text; font-family: Georgia,'Times New Roman','Bitstream Charter',Times,serif; font-size: 16px; font-style: normal; font-variant: normal; font-weight: 400; letter-spacing: normal; text-align: left; text-decoration: none; text-indent: 0px; text-transform: none;\">By David Barbarin<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>This blog post comes from a very interesting discussion with one of my friends about the read-only capabilities of secondary replicas in the context of distributed availability groups. Initially, distributed availability groups are designed to address D\/R scenarios and some migration scenario types as well. I already discussed about of one possible migration scenario here. [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":9764,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[466,1029,790,862,84,975,1030,566],"type_dbi":[],"class_list":["post-9756","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-alwayson","tag-cascaded-replicas","tag-disaster-recovery","tag-distributed-availability-group","tag-high-availability","tag-read-only-replicas","tag-scale-out","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 AlwaysOn - Distributed availability groups, read-only with round-robin capabilities<\/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-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server AlwaysOn - Distributed availability groups, read-only with round-robin capabilities\" \/>\n<meta property=\"og:description\" content=\"This blog post comes from a very interesting discussion with one of my friends about the read-only capabilities of secondary replicas in the context of distributed availability groups. Initially, distributed availability groups are designed to address D\/R scenarios and some migration scenario types as well. I already discussed about of one possible migration scenario here. [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-02-08T19:04:23+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-18T05:37:25+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"550\" \/>\n\t<meta property=\"og:image:height\" content=\"395\" \/>\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=\"5 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-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server AlwaysOn &#8211; Distributed availability groups, read-only with round-robin capabilities\",\"datePublished\":\"2017-02-08T19:04:23+00:00\",\"dateModified\":\"2023-07-18T05:37:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\"},\"wordCount\":629,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg\",\"keywords\":[\"AlwaysOn\",\"cascaded replicas\",\"disaster recovery\",\"distributed availability group\",\"High availability\",\"read-only replicas\",\"scale-out\",\"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-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\",\"name\":\"SQL Server AlwaysOn - Distributed availability groups, read-only with round-robin capabilities\",\"isPartOf\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg\",\"datePublished\":\"2017-02-08T19:04:23+00:00\",\"dateModified\":\"2023-07-18T05:37:25+00:00\",\"author\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage\",\"url\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg\",\"contentUrl\":\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg\",\"width\":550,\"height\":395},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/www.dbi-services.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server AlwaysOn &#8211; Distributed availability groups, read-only with round-robin capabilities\"}]},{\"@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 AlwaysOn - Distributed availability groups, read-only with round-robin capabilities","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-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server AlwaysOn - Distributed availability groups, read-only with round-robin capabilities","og_description":"This blog post comes from a very interesting discussion with one of my friends about the read-only capabilities of secondary replicas in the context of distributed availability groups. Initially, distributed availability groups are designed to address D\/R scenarios and some migration scenario types as well. I already discussed about of one possible migration scenario here. [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/","og_site_name":"dbi Blog","article_published_time":"2017-02-08T19:04:23+00:00","article_modified_time":"2023-07-18T05:37:25+00:00","og_image":[{"width":550,"height":395,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server AlwaysOn &#8211; Distributed availability groups, read-only with round-robin capabilities","datePublished":"2017-02-08T19:04:23+00:00","dateModified":"2023-07-18T05:37:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/"},"wordCount":629,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg","keywords":["AlwaysOn","cascaded replicas","disaster recovery","distributed availability group","High availability","read-only replicas","scale-out","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-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/","name":"SQL Server AlwaysOn - Distributed availability groups, read-only with round-robin capabilities","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg","datePublished":"2017-02-08T19:04:23+00:00","dateModified":"2023-07-18T05:37:25+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-116-01-distributed-ag-archi-e1486583025401-1.jpg","width":550,"height":395},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-alwayson-distributed-availability-groups-read-only-with-round-robin-capabilities\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server AlwaysOn &#8211; Distributed availability groups, read-only with round-robin capabilities"}]},{"@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\/9756","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=9756"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9756\/revisions"}],"predecessor-version":[{"id":26798,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9756\/revisions\/26798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/9764"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9756"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9756"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9756"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9756"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}