{"id":11946,"date":"2018-10-28T18:02:40","date_gmt":"2018-10-28T17:02:40","guid":{"rendered":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/"},"modified":"2018-10-28T18:02:40","modified_gmt":"2018-10-28T17:02:40","slug":"sql-server-2019-availability-groups-introduction-to-rw-redirection","status":"publish","type":"post","link":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/","title":{"rendered":"SQL Server 2019 availability groups &#8211; Introduction to R\/W redirection"},"content":{"rendered":"<p>writeThis is a second write-up about SQL Server 2019 CTP2.0 and availability group new features. This time the\u00a0interesting one is about <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/secondary-replica-connection-redirection-always-on-availability-groups?view=sqlallproducts-allversions\" target=\"_blank\" rel=\"noopener noreferrer\">READRWRITE redirection<\/a> capabilities. A couple of months ago, I wrote about SQL Server 2017 and <a href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/\" target=\"_blank\" rel=\"noopener noreferrer\">new read-scale capabilities<\/a> and listener management challenges regarding the operating system. Indeed, there are some scenarios where including listener will not as easy as we did with common ones on the top of Windows operation system. A list of these scenarios is listed in the <a href=\"https:\/\/docs.microsoft.com\/en-us\/sql\/database-engine\/availability-groups\/windows\/secondary-replica-connection-redirection-always-on-availability-groups?view=sqlallproducts-allversions\" target=\"_blank\" rel=\"noopener noreferrer\">BOL<\/a>.<\/p>\n<p>Without a listener, I would say that read-only connections are not a big deal because they are supposed to work regardless the replica\u2019s role \u2013 either PRIMARY or secondary the game is not the same with read-write connections. The connection&#8217;s write-part may trigger errors if they attempt to run write queries and guess what, this issue is addressed by new READWRITE capabilities of AGs in SQL Server 2019.<\/p>\n<p>Let\u2019s set the context of my lab environment:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-1-AG-schema-redirection-RW.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29168\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-1-AG-schema-redirection-RW.jpg\" alt=\"blog 146 - 1 - AG schema redirection RW\" width=\"541\" height=\"432\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<p>This is\u00a0a pretty simple environment that includes 2 replicas in synchronous mode. Automatic failover is obviously not available in read scale topology.<\/p>\n<p>My first test was to attempt a R\/W client connection from the secondary to see if redirection applied on the primary. My configuration script includes the new READ_WRITE_ROUTING_URL requested for the redirection to the primary.<\/p>\n<pre class=\"brush: sql; gutter: true; first-line: 1\">:CONNECT WIN20161\\SQL2019CTP2\nCREATE AVAILABILITY GROUP AG2019   \nWITH ( CLUSTER_TYPE =  NONE )  \nFOR DATABASE  [AdventureWorks2016]   \nREPLICA ON \n'WIN20161\\SQL2019CTP2' WITH   \n(  \n\tENDPOINT_URL = 'TCP:\/\/WIN20161.dbi-services.test:5026',  \n\tAVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  \n\tFAILOVER_MODE = MANUAL,  \n\t-- Secondary role =&gt; we need to allow all connection types \n\t-- R\/O + R\/W to allow R\/W connections\n\tSECONDARY_ROLE (\n\t\tALLOW_CONNECTIONS = ALL,   \n\t\tREAD_ONLY_ROUTING_URL = 'TCP:\/\/WIN20161.dbi-services.test:1459' \n\t),\n\tPRIMARY_ROLE (\n\t\tALLOW_CONNECTIONS = READ_WRITE,   \n\t\tREAD_ONLY_ROUTING_LIST = ('WIN20162\\SQL2019CTP2'),\n\t\tREAD_WRITE_ROUTING_URL = 'TCP:\/\/WIN20161.dbi-services.test:1459' \n\t),  \n\tSESSION_TIMEOUT = 10,\n\tSEEDING_MODE = AUTOMATIC  \n),   \n'WIN20162\\SQL2019CTP2' WITH   \n(  \n\tENDPOINT_URL = 'TCP:\/\/WIN20162.dbi-services.test:5026',  \n\tAVAILABILITY_MODE = SYNCHRONOUS_COMMIT,  \n\tFAILOVER_MODE = MANUAL, \n\tSECONDARY_ROLE (\n\t\tALLOW_CONNECTIONS = ALL,   \n\t\tREAD_ONLY_ROUTING_URL = 'TCP:\/\/WIN20162.dbi-services.test:1459' \n\t),   \n\tPRIMARY_ROLE (\n\t\tALLOW_CONNECTIONS = READ_WRITE,   \n\t\tREAD_ONLY_ROUTING_LIST = ('WIN20161\\SQL2019CTP2'),\n\t\tREAD_WRITE_ROUTING_URL = 'TCP:\/\/WIN20162.dbi-services.test:1459' \n\t), \n\tSESSION_TIMEOUT = 10,\n\tSEEDING_MODE = AUTOMATIC\n);\nGO \n\nALTER AVAILABILITY GROUP [AG2019] GRANT CREATE ANY DATABASE\nGO\n\n:CONNECT WIN20162\\SQL2019CTP2\nALTER AVAILABILITY GROUP [AG2019] JOIN WITH (CLUSTER_TYPE = NONE);\nGO  \n\nALTER AVAILABILITY GROUP [AG2019] GRANT CREATE ANY DATABASE\nGO<\/pre>\n<p>&nbsp;<\/p>\n<p>My AG current state is as follows and meets all R\/W redirection prerequisites: the <em>WIN20162\\SQL2019CTP2<\/em> secondary replica is online and the primary replica includes READ_WRITE_ROUTING_URL as well.<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29060\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg\" alt=\"blog 146 - 2 - AG config\" width=\"800\" height=\"207\" \/><\/a><\/p>\n<p>We may notice new <em>sys.availability_replicas<\/em> view column concerning shipped with this new SQL Server version including R\/W URL settings and primary connection mode as well.<\/p>\n<p>Let\u2019s try a R\/W connection to the secondary replica <em>WIN20162\\SQL2019CT2<\/em> with the following connection string. <em>ApplicationIntent <\/em>parameter is not specified meaning I will use R\/W intent by default.<\/p>\n<pre class=\"brush: powershell; gutter: true; first-line: 1\">$connectionString = \"Server=WIN20162\\SQL2019CTP2; Integrated Security=False; uid=sa; pwd=xxxx; Initial Catalog=AdventureWorks2016;\"<\/pre>\n<p>&nbsp;<\/p>\n<p>I got the expected result. My connection is transparently redirecting to my primary replica <em>WIN20161\\SQL2019CT2<\/em> as shown below:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-3-Test-AG-RW-redirection-e1540748761408.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29061\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-3-Test-AG-RW-redirection-e1540748761408.jpg\" alt=\"blog 146 - 3 - Test AG RW redirection\" width=\"800\" height=\"85\" \/><\/a><\/p>\n<p>Let\u2019s switch my connection intent to read-only (connection parameter <em>ApplicationIntent=ReadOnly):<\/em><\/p>\n<pre class=\"brush: powershell; gutter: true; first-line: 1\">$connectionString = \"Server=WIN20162\\SQL2019CTP2; Integrated Security=False; uid=sa; pwd=xxxx; Initial Catalog=AdventureWorks2016; ApplicationIntent=ReadOnly\"<\/pre>\n<p>&nbsp;<\/p>\n<p>The connection stays on the secondary read-only accordingly to my AG configuration:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-4-Test-AG-RO-redirection-e1540748929842.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29063\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-4-Test-AG-RO-redirection-e1540748929842.jpg\" alt=\"blog 146 - 4 - Test AG RO redirection\" width=\"800\" height=\"55\" \/><\/a><\/p>\n<p>This new capability did the expected job. Obviously if you miss some prerequisites redirection will not occur but at the moment of this write-up I didn\u2019t find out any \u201cobvious\u201d extended event to troubleshoot R\/W routing events as we may already use for R\/O routing. Probably in the next CTP \u2026<\/p>\n<p>In a nutshell, this new feature concerns R\/W redirections from a secondary to a primary replica. But for curiosity, I tried to perform the same test for R\/O redirection with <em>ApplicationIntent=ReadOnly<\/em> but without luck.<\/p>\n<pre class=\"brush: powershell; gutter: true; first-line: 1\">$connectionString = \"Server=WIN20161\\SQL2019CTP2; Integrated Security=False; uid=sa; pwd=xxxx; Initial Catalog=AdventureWorks2016; ApplicationIntent=ReadOnly\"\n<\/pre>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-5-Test-AG-RO-redirection-1-e1540749138544.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29066\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-5-Test-AG-RO-redirection-1-e1540749138544.jpg\" alt=\"blog 146 - 5 - Test AG RO redirection 1\" width=\"1000\" height=\"111\" \/><\/a><\/p>\n<p>To confirm my R\/O topology is well configured,\u00a0I implemented a AG listener as I did in a previous\u00a0<a href=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2017-and-new-read-scale-architectures\/\" target=\"_blank\" rel=\"noopener noreferrer\">blog post<\/a> about AG read-scale scenarios. For my test, I\u00a0replaced the server value by the listener name in\u00a0the following connection string. My\u00a0AG listener\u00a0is listen on port 1459 \u00a0\u2026<\/p>\n<pre class=\"brush: powershell; gutter: true; first-line: 1\">$connectionString = \"Server=lst-ag2019,1459; Integrated Security=False; uid=sa; pwd=xxxx; Initial Catalog=AdventureWorks2016; ApplicationIntent=ReadOnly\"<\/pre>\n<p>&nbsp;<\/p>\n<p>\u2026 and it ran successfully as show below. My connection is well redirected from the primary \u2013 <em>WIN20161\\SQL2019CTP2<\/em> to the secondary <em>WIN20162\\SQL2019CTP2<\/em>:<\/p>\n<p><a href=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-6-Test-AG-RO-redirection-2-e1540749435517.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-29067\" src=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-6-Test-AG-RO-redirection-2-e1540749435517.jpg\" alt=\"blog 146 - 6 - Test AG RO redirection 2\" width=\"900\" height=\"95\" \/><\/a><\/p>\n<p>Well, it seems that R\/O redirection without using a listener is not implemented yet but it is probably out of the scope of SQL2019 AG redirection capabilities.<\/p>\n<p>See you!<\/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>writeThis is a second write-up about SQL Server 2019 CTP2.0 and availability group new features. This time the\u00a0interesting one is about READRWRITE redirection capabilities. A couple of months ago, I wrote about SQL Server 2017 and new read-scale capabilities and listener management challenges regarding the operating system. Indeed, there are some scenarios where including listener [&hellip;]<\/p>\n","protected":false},"author":26,"featured_media":11948,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[229,198,99],"tags":[297,84,1076,1482],"type_dbi":[],"class_list":["post-11946","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-database-administration-monitoring","category-database-management","category-sql-server","tag-availability-groups","tag-high-availability","tag-read-scale","tag-sqlserver-2019"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.5) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>SQL Server 2019 availability groups - Introduction to R\/W redirection<\/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-2019-availability-groups-introduction-to-rw-redirection\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SQL Server 2019 availability groups - Introduction to R\/W redirection\" \/>\n<meta property=\"og:description\" content=\"writeThis is a second write-up about SQL Server 2019 CTP2.0 and availability group new features. This time the\u00a0interesting one is about READRWRITE redirection capabilities. A couple of months ago, I wrote about SQL Server 2017 and new read-scale capabilities and listener management challenges regarding the operating system. Indeed, there are some scenarios where including listener [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/\" \/>\n<meta property=\"og:site_name\" content=\"dbi Blog\" \/>\n<meta property=\"article:published_time\" content=\"2018-10-28T17:02:40+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"800\" \/>\n\t<meta property=\"og:image:height\" content=\"207\" \/>\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=\"4 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-2019-availability-groups-introduction-to-rw-redirection\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/\"},\"author\":{\"name\":\"Microsoft Team\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"headline\":\"SQL Server 2019 availability groups &#8211; Introduction to R\\\/W redirection\",\"datePublished\":\"2018-10-28T17:02:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/\"},\"wordCount\":569,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-146-2-AG-config-e1540748593372.jpg\",\"keywords\":[\"Availability groups\",\"High availability\",\"read-scale\",\"sqlserver 2019\"],\"articleSection\":[\"Database Administration &amp; Monitoring\",\"Database management\",\"SQL Server\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/\",\"name\":\"SQL Server 2019 availability groups - Introduction to R\\\/W redirection\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-146-2-AG-config-e1540748593372.jpg\",\"datePublished\":\"2018-10-28T17:02:40+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/#\\\/schema\\\/person\\\/bfab48333280d616e1170e7369df90a4\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-146-2-AG-config-e1540748593372.jpg\",\"contentUrl\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/2\\\/2022\\\/04\\\/blog-146-2-AG-config-e1540748593372.jpg\",\"width\":800,\"height\":207},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/sql-server-2019-availability-groups-introduction-to-rw-redirection\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/www.dbi-services.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"SQL Server 2019 availability groups &#8211; Introduction to R\\\/W redirection\"}]},{\"@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 2019 availability groups - Introduction to R\/W redirection","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-2019-availability-groups-introduction-to-rw-redirection\/","og_locale":"en_US","og_type":"article","og_title":"SQL Server 2019 availability groups - Introduction to R\/W redirection","og_description":"writeThis is a second write-up about SQL Server 2019 CTP2.0 and availability group new features. This time the\u00a0interesting one is about READRWRITE redirection capabilities. A couple of months ago, I wrote about SQL Server 2017 and new read-scale capabilities and listener management challenges regarding the operating system. Indeed, there are some scenarios where including listener [&hellip;]","og_url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/","og_site_name":"dbi Blog","article_published_time":"2018-10-28T17:02:40+00:00","og_image":[{"width":800,"height":207,"url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg","type":"image\/jpeg"}],"author":"Microsoft Team","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Microsoft Team","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#article","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/"},"author":{"name":"Microsoft Team","@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"headline":"SQL Server 2019 availability groups &#8211; Introduction to R\/W redirection","datePublished":"2018-10-28T17:02:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/"},"wordCount":569,"commentCount":0,"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg","keywords":["Availability groups","High availability","read-scale","sqlserver 2019"],"articleSection":["Database Administration &amp; Monitoring","Database management","SQL Server"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/","url":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/","name":"SQL Server 2019 availability groups - Introduction to R\/W redirection","isPartOf":{"@id":"https:\/\/www.dbi-services.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#primaryimage"},"image":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#primaryimage"},"thumbnailUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg","datePublished":"2018-10-28T17:02:40+00:00","author":{"@id":"https:\/\/www.dbi-services.com\/blog\/#\/schema\/person\/bfab48333280d616e1170e7369df90a4"},"breadcrumb":{"@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#primaryimage","url":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg","contentUrl":"https:\/\/www.dbi-services.com\/blog\/wp-content\/uploads\/sites\/2\/2022\/04\/blog-146-2-AG-config-e1540748593372.jpg","width":800,"height":207},{"@type":"BreadcrumbList","@id":"https:\/\/www.dbi-services.com\/blog\/sql-server-2019-availability-groups-introduction-to-rw-redirection\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/www.dbi-services.com\/blog\/"},{"@type":"ListItem","position":2,"name":"SQL Server 2019 availability groups &#8211; Introduction to R\/W redirection"}]},{"@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\/11946","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=11946"}],"version-history":[{"count":0,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/posts\/11946\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media\/11948"}],"wp:attachment":[{"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/media?parent=11946"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/categories?post=11946"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/tags?post=11946"},{"taxonomy":"type","embeddable":true,"href":"https:\/\/www.dbi-services.com\/blog\/wp-json\/wp\/v2\/type_dbi?post=11946"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}