{"id":9963,"date":"2017-04-21T11:40:31","date_gmt":"2017-04-21T09:40:31","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/"},"modified":"2023-07-17T16:47:42","modified_gmt":"2023-07-17T14:47:42","slug":"sql-server-2017-and-new-read-scale-architectures","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/","title":{"rendered":"SQL Server 2017 AlwaysOn AGs and new read-scale architectures"},"content":{"rendered":"<p>As you probably know Microsoft announced an official name for\u00a0SQL Server vNext during the last <a href=\"https:\/\/blogs.technet.microsoft.com\/dataplatforminsider\/2017\/04\/19\/sql-server-2017-community-technology-preview-2-0-now-available\/\" target=\"_blank\" rel=\"noopener noreferrer\">Microsoft Data Amp <\/a>event on April 19 2017. It becomes officially SQL Serve 2017.<\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">In my first <\/span><a href=\"https:\/\/www.dbi-services.com\/blog\/introducing-alwayson-availability-groups-on-linux\/\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">blog post<\/span><\/a><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">, I wrote about SQL Server on Linux and the introduction of availability groups features. At this moment the SQL Server release version was CTP 1.3. As <\/span>a<span style=\"color: #000000;\"> reminder, with previous CTP releases, listeners were unusable because they did not persist when switch over events occurred as well as they didn\u2019t provide any transparent redirection capabilities. Today, we are currently on the CTP 2.0 and this last CTP release comes with an important improvement concerning AGs with the support of listeners.<\/span><\/span><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">In this blog post I don\u2019t want to write about creating an AG listener on Linux environment. The process is basically the same <\/span>that <span style=\"color: #000000;\">creating a listener on Windows and it is well documented by Microsoft for a while. But several things shipped with the last CTP 2.0 have drawn my attention and will allow extending some scenarios with AGs. <\/span><\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">First of all, from the <\/span><a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/linux\/sql-server-linux-availability-group-configure-ha\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">Microsoft documentation<\/span><\/a><span style=\"color: #000000; font-family: Calibri;\"> we may notice a \u201cCreate for read-scale only\u201d section. In a nutshell, we are now able to create a cluster-less availability group. Indeed, in this context we want to prioritize scale-out scenarios in favor of HA meaning the cluster layer is not mandatory here. That\u2019s the point. Using Linux or Windows operating system in this case? Well, we may have a long debate here but let&#8217;s say we will use a Linux operating system for this scenario.<\/span><\/p>\n<p>You also probably noticed that the CLUSTER_TYPE parameter includes now a new EXTERNAL value. So we may create an availability group? by using one of the following values:<\/p>\n<ul>\n<li>WSFC = A Windows Server Failover Cluster will manage the availability group<\/li>\n<li>EXTERNAL = An external entity will manage the availability group (pacemaker on Linux so far)<\/li>\n<li>NONE = No cluster entity will manage the availability group<\/li>\n<\/ul>\n<p><span style=\"color: #000000; font-family: Calibri;\">In my opinion, introducing the EXTERNAL value does make sense regarding the previous CTP releases. Indeed we were able only to specify NONE value to either use an external entity to manage AGs or to use nothing for\u00a0read-scale scenarios making it meaningless. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">At the same time FAILOVER_MODE parameter includes also a new EXTERNAL value which must be specified when using an external entity to manage AGs failover. <\/span><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Before <\/span>going <span style=\"color: #000000;\">further in this blog post <\/span>let\u2019s<span style=\"color: #000000;\"> set the scene. A pretty basic environment which includes 3 high available replicas on Linux involved in a\u00a0read-scale scenario meaning no extra layer of HA management and asynchronous mode as well.<\/span><\/span><\/p>\n<p><strong>\u00a0<img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15990\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg\" alt=\"blog 121 - ag linux read-scale scenario\" width=\"655\" height=\"316\" \/><\/strong><\/p>\n<p>As a reminder, implementing a listener with corresponding read-only routes is very useful for the following reasons:<\/p>\n<ul>\n<li>Applications are transparently redirected to the corresponding read-only replica when read intent parameter is specified<\/li>\n<li>Since SQL Server 2016 applications may be redirected in a round-robin fashion, there\u2019s no need to implement extra component (ok .. round-robin algorithm is pretty basic but that\u2019s not so bad actually)<\/li>\n<li>Application does not need to know the underlying infrastructure. They have to connect to the AG listener and that\u2019s it.<\/li>\n<\/ul>\n<p>But in such scenario where no cluster layer is installed, we are not able to benefit from a floating virtual IP which is part of the automatic redirection to the primary replica in case of a failover event and as you already know, connections must be redirected to the primary in order to benefit from transparent redirection \/ round robin capabilities. So the remaining question is how to achieve redirection without a floating IP address in this case?<\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Firstly let\u2019s say creating an AG listener on Linux doesn\u2019t imply creating a corresponding virtual IP and Network Name on the cluster side and especially in this case where AG doesn\u2019t rely on the cluster layer. However creating an AG listener that relies on the <span style=\"text-decoration: underline;\">primary replica IP address<\/span> to benefit from transparent \/ round-robin redirection remains a viable option. This is only the first part of the solution because we have also to address scenarios that include switchover events. Indeed, in this case, primary replica may change regarding the context and the current listener\u2019s configuration becomes invalid (we refer to the previous primary\u2019s IP address). At this stage, I would like to thank again <\/span><a href=\"https:\/\/twitter.com\/MihaelaBlendea\" target=\"_blank\" rel=\"noopener noreferrer\"><span style=\"color: #0563c1; font-family: Calibri;\">@MihaelaBlendea<\/span><\/a><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\"> from Microsoft who put me on the right track. <\/span><\/span><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\"><s>This is not an official \/ supported solution but\u00a0it seems to work well according\u00a0to my tests<\/s>. <strong>Update 21.04.2017 : Mihaela has confirmed this is a supported solution from Microsoft.<\/strong><\/span><\/span><\/p>\n<p>The solution consists in including all the replica IP addresses included<span style=\"color: #000000;\"> in the topology in the listener definition and we may use a DNS record to point to the correct primary replica after a manual failover event. Therefore, applications do have only to know the DNS record to connect to the underlying SQL Server infrastructure. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Here the definition of my availability group including the listener:<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">CREATE AVAILABILITY GROUP [AdvGrpDRLinux]\nWITH\n(\n    DB_FAILOVER = ON, --&gt; Trigger the failover of the entire AG if one DB fails \n    CLUSTER_TYPE = NONE \n)\nFOR REPLICA ON\nN'LINUX07'\nWITH\n(\n    ENDPOINT_URL = N'tcp:\/\/192.168.40.23:5022',\n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\n    FAILOVER_MODE = MANUAL,\n    SEEDING_MODE = AUTOMATIC, --&gt; use direct seeding\n    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)\n),\nN'LINUX08'\nWITH\n( \n    ENDPOINT_URL = N'tcp:\/\/192.168.40.24:5022', \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\n    FAILOVER_MODE = MANUAL, \n    SEEDING_MODE = AUTOMATIC, --&gt; use direct seeding\n    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)\n),\nN'LINUX09'\nWITH\n( \n    ENDPOINT_URL = N'tcp:\/\/192.168.40.25:5022', \n    AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT,\n    FAILOVER_MODE = MANUAL, \n    SEEDING_MODE = AUTOMATIC, --&gt; use direct seeding\n    SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL)\n);\nGO\n\nALTER AVAILABILITY GROUP [AdvGrpDRLinux] GRANT CREATE ANY DATABASE;\nGO\n\n\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]   \nADD LISTENER 'lst-advgrplinux' \n( \n\tWITH IP ( ('192.168.40.23', '255.255.255.0'), --&gt; LINUX07 IP Address\n\t\t\t  ('192.168.40.24', '255.255.255.0'), --&gt; LINUX08 IP Address\n\t\t\t  ('192.168.40.25', '255.255.255.0')  --&gt; LINUX09 IP Address\n\t        ) \n\t\t, PORT = 1433 \n);   \nGO<\/pre>\n<p>Notable parameters are:<\/p>\n<ul>\n<li>CLUSTER_TYPE = NONE<\/li>\n<li>AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT<\/li>\n<li>FAILOVER_MODE = MANUAL<\/li>\n<li>Direct seeding is enabled.<\/li>\n<\/ul>\n<p>Let\u2019s have a look at the AG configuration by using AG DMVs:<\/p>\n<p><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15991 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linuxag-config-e1492774448934.jpg\" alt=\"blog 121 - ag linuxag config\" width=\"800\" height=\"198\" \/><\/strong><\/p>\n<p><span style=\"font-family: Calibri;\"><span style=\"color: #000000;\">Then here the listener <\/span>configuration:<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15992 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linuxag-listener-config-e1492774564463.jpg\" alt=\"blog 121 - ag linuxag listener config\" width=\"800\" height=\"72\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">And finally the configuration of my read-only routes and the priority list for redirection:<\/span><\/p>\n<p><strong><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15993 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linuxag-ro-config-e1492774590424.jpg\" alt=\"blog 121 - ag linuxag ro config\" width=\"800\" height=\"248\" \/><\/strong><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">You may notice that I use round-robin capabilities for each replica. <\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">I also created a DNS A record with the address of the current primary replica (lst-advgrplinux \u2013 192.168.40.23). DNS record will be used by applications to connect the AdvGrpDRLinux AG.<\/span><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Let\u2019s test the new configuration by using SQLCMD tool with \u2013K READONLY option. Redirection and round-robin feature come into play. First test is conclusive.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15994 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-first-test-sqlcmd-e1492774617548.jpg\" alt=\"blog 121 - ag linux first test sqlcmd\" width=\"800\" height=\"502\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">Go ahead and let\u2019s perform a manual failover. In this case, the primary replica is still available, so I just switched momentary on synchronous mode to avoid resuming replication databases from secondary replicas afterwards. Then I performed a switch over to the LINUX08 replica. According to the Microsoft documentation, in order to guarantee no data loss I also changed temporary the REQUIERED_COPIES_TO_COMMIT to 1. Finally, after performing the manual failover successfully, I switched back to asynchronous mode (REQUIERED_COPIES_TO_COMMIT must be reverted to 0 in this case).<\/span><\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">USE [master]\nGO\n\n-- switch momentary to synchronous mode\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX07' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT)\nGO\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX08' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT)\nGO\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX09' WITH (AVAILABILITY_MODE = SYNCHRONOUS_COMMIT)\nGO\n\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nSET (REQUIRED_COPIES_TO_COMMIT = 1)\n\n-- demote old primary replica LINUX07\nALTER AVAILABILITY GROUP [AdvGrpDRLinux] SET (ROLE = SECONDARY); \n\n-- switch to new primary replica LINUX08\n:CONNECT LINUX08 -U sa -PXXXXX\nALTER AVAILABILITY GROUP [AdvGrpDRLinux] FAILOVER;\nGO\n\n-- revert back to asynchronous mode\n:CONNECT LINUX08 -U sa -PXXXXX\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nSET (REQUIRED_COPIES_TO_COMMIT = 0)\n\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX07' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT)\nGO\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX08' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT)\nGO\nALTER AVAILABILITY GROUP [AdvGrpDRLinux]\nMODIFY REPLICA ON N'LINUX09' WITH (AVAILABILITY_MODE = ASYNCHRONOUS_COMMIT)\nGO<\/pre>\n<p><span style=\"color: #000000; font-family: Calibri;\">After updating the DNS record to point to the new primary replica \u2013 LINUX08 with IP address equal to 192.168.40.24, transparent redirection and round-robin capabilities continued to work correctly.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-15995 size-full\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-second-test-sqlcmd-e1492774649405.jpg\" alt=\"blog 121 - ag linux second test sqlcmd\" width=\"800\" height=\"310\" \/><\/p>\n<p><span style=\"color: #000000; font-family: Calibri;\">See you soon for other interesting new scenarios with availability groups on Linux!<\/span><\/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>As you probably know Microsoft announced an official name for\u00a0SQL Server vNext during the last Microsoft Data Amp event on April 19 2017. It becomes officially SQL Serve 2017. In my first blog post, I wrote about SQL Server on Linux and the introduction of availability groups features. At this moment the SQL Server release [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":9964,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229],"tags":[466,297,84,73,43,1076,1030,1077,1019],"type_dbi":[],"class_list":["post-9963","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","tag-alwayson","tag-availability-groups","tag-high-availability","tag-linux","tag-listener","tag-read-scale","tag-scale-out","tag-sql-server-2017","tag-sql-server-vnext"],"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 2017 AlwaysOn AGs and new read-scale architectures<\/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-2017-and-new-read-scale-architectures\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2017 AlwaysOn AGs and new read-scale architectures\" \/>\n<meta property=\"og:description\" content=\"As you probably know Microsoft announced an official name for\u00a0SQL Server vNext during the last Microsoft Data Amp event on April 19 2017. It becomes officially SQL Serve 2017. In my first blog post, I wrote about SQL Server on Linux and the introduction of availability groups features. At this moment the SQL Server release [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-04-21T09:40:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-17T14:47:42+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"655\" \/>\n\t<meta property=\"og:image:height\" content=\"316\" \/>\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=\"6 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-2017-and-new-read-scale-architectures\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server 2017 AlwaysOn AGs and new read-scale architectures\",\"datePublished\":\"2017-04-21T09:40:31+00:00\",\"dateModified\":\"2023-07-17T14:47:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/\"},\"wordCount\":1068,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-121-ag-linux-read-scale-scenario.jpg\",\"keywords\":[\"AlwaysOn\",\"Availability groups\",\"High availability\",\"Linux\",\"Listener\",\"read-scale\",\"scale-out\",\"SQL Server 2017\",\"SQL Server vNext\"],\"articleSection\":[\"Database Administration &amp; Monitoring\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/\",\"name\":\"SQL Server 2017 AlwaysOn AGs and new read-scale architectures\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-121-ag-linux-read-scale-scenario.jpg\",\"datePublished\":\"2017-04-21T09:40:31+00:00\",\"dateModified\":\"2023-07-17T14:47:42+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-121-ag-linux-read-scale-scenario.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-121-ag-linux-read-scale-scenario.jpg\",\"width\":655,\"height\":316},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2017-and-new-read-scale-architectures\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2017 AlwaysOn AGs and new read-scale architectures\"}]},{\"@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 2017 AlwaysOn AGs and new read-scale architectures","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-2017-and-new-read-scale-architectures\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2017 AlwaysOn AGs and new read-scale architectures","og_description":"As you probably know Microsoft announced an official name for\u00a0SQL Server vNext during the last Microsoft Data Amp event on April 19 2017. It becomes officially SQL Serve 2017. In my first blog post, I wrote about SQL Server on Linux and the introduction of availability groups features. At this moment the SQL Server release [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/","og_site_name":"dbi Blog","article_published_time":"2017-04-21T09:40:31+00:00","article_modified_time":"2023-07-17T14:47:42+00:00","og_image":[{"width":655,"height":316,"url":"http:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server 2017 AlwaysOn AGs and new read-scale architectures","datePublished":"2017-04-21T09:40:31+00:00","dateModified":"2023-07-17T14:47:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/"},"wordCount":1068,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg","keywords":["AlwaysOn","Availability groups","High availability","Linux","Listener","read-scale","scale-out","SQL Server 2017","SQL Server vNext"],"articleSection":["Database Administration &amp; Monitoring"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/","name":"SQL Server 2017 AlwaysOn AGs and new read-scale architectures","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg","datePublished":"2017-04-21T09:40:31+00:00","dateModified":"2023-07-17T14:47:42+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-121-ag-linux-read-scale-scenario.jpg","width":655,"height":316},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2017 AlwaysOn AGs and new read-scale architectures"}]},{"@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\/9963","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=9963"}],"version-history":[{"count":1,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9963\/revisions"}],"predecessor-version":[{"id":26777,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/9963\/revisions\/26777"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/9964"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=9963"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=9963"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=9963"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=9963"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}