R2DBC是否支持SQL Server连接的ApplicationIntent=ReadOnly参数?
R2DBC SQL Server对
ApplicationIntent=ReadOnly的支持及替代方案 直接结论
R2DBC的SQL Server驱动(r2dbc-mssql)是支持ApplicationIntent=ReadOnly参数的,无需额外改造,可直接在连接配置中使用。
具体用法
两种配置方式都能生效:
- 连接URL形式:
r2dbc:mssql://<服务器地址>:<端口>/<数据库名>?ApplicationIntent=ReadOnly - Spring Boot项目的
application.yml配置:spring: r2dbc: url: r2dbc:mssql://localhost:1433/your_db?ApplicationIntent=ReadOnly
额外保障方案(可选)
如果需要进一步确保连接的只读性,可搭配以下方法:
- 使用只读权限数据库用户:在SQL Server中创建仅拥有SELECT权限的用户,R2DBC通过该用户连接,从权限层面彻底限制写操作。
- 连接后强制设置只读会话:建立连接后执行
SET TRANSACTION READ ONLY;语句,将当前会话切换为只读模式。示例代码:connection.createStatement("SET TRANSACTION READ ONLY;").execute().block(); - 配合SQL Server只读路由:若你的SQL Server搭建了Always On可用性组,携带
ApplicationIntent=ReadOnly参数的连接会被自动路由到只读副本,实现读写分离的效果。
内容的提问来源于stack exchange,提问作者Farinaz Kiani
相关产品推荐
相关产品推荐

