Sql-Server

SQL Server 連接屬性 applicationIntent

  • May 18, 2021

我對 SQL Server 的 ApplicationIntent 連接屬性有疑問。文件說它有兩個值ReadWriteReadOnly。如果我將值設置為 ReadOnly,它將只允許讀取查詢還是還支持對 SQLServer 的更新查詢?


我問這個,記住 SQLServer 的可用性組中的只讀路由!

希望 SQL Server Native Client 的文件能夠為您解決問題,特別是關於指定應用程序意圖的這一部分

可以在連接字元串中指定關鍵字 ApplicationIntent。可分配的值為 ReadWrite 或 ReadOnly。預設值為讀寫。

當 ApplicationIntent=ReadOnly 時,客戶端在連接時請求讀取工作負載。伺服器在連接時和 USE 數據庫語句期間強制執行意圖。

由於您提到這是在可用性組 (AG) 的上下文中,因此指定 ReadOnly 的意圖會將您連接到可用性組中的可讀輔助節點(只要您連接到偵聽器,並且您使用的是企業版)。

因此,強制執行是由於輔助節點是只讀的 - 您可以嘗試通過此連接執行數據修改,但它們會失敗。

注意:對於更複雜的設置,具有多個可讀輔助節點,您也可以配置只讀路由

我問這個,記住 SQLServer 的可用性組中的只讀路由!

在這裡,ApplicationIntent=ReadOnly當您配置只讀路由(連結到我的部落格)並且想要將其路由read connection requests到可讀的輔助副本以實現可伸縮性時使用

您需要在連接字元串上指定ApplicationIntent = ReadOnlyandInitial Catalog才能使這個只讀路由工作

ApplicationIntent=ReadOnly; Initial Catalog = DBName;

否則,它將連接到主副本(ApplicationIntent = ReadWrite:預設值)。

Always On AG上,當與 ReadOnly intent 連接時,您無法對可讀輔助副本執行更新查詢只允許在主副本上進行寫操作。

引用自:https://dba.stackexchange.com/questions/231564