R2DBC是否支持SQL Server连接的"ApplicationIntent=ReadOnly"参数?

5

我正在开发一个项目,使用R2DBC库进行响应式数据库访问。但是,我不确定R2DBC是否支持SQL Server连接的ApplicationIntent=ReadOnly参数。这个参数通常用于Microsoft SQL Server连接字符串中,表示应用程序只想从数据库读取,如果可用,允许SQL Server将连接重定向到只读副本。

我已经查阅了官方的R2DBC文档,但没有找到关于这个参数的具体信息。我想知道是否有人使用过R2DBC与SQL Server,并能提供有关R2DBC是否支持"ApplicationIntent=ReadOnly"或者是否有任何解决方法来实现类似的行为的见解。

如果R2DBC不能直接支持此参数,则希望提供替代方法的建议,以确保将R2DBC连接到SQL Server视为只读,例如在数据库级别配置SQL Server连接。


所以,如果你下载源代码(git clone https://github.com/r2dbc/r2dbc-mssql.git)并搜索其中的 ApplicationIntent,你能找到什么吗? - AlwaysLearning
@AlwaysLearning 不,还有在README文件中,具体在“支持的ConnectionFactory发现选项”部分,你不会找到“ApplicationIntent”。 - Farinaz Kiani
从5秒钟的谷歌搜索结果来看,它似乎支持连接字符串中的任意键值对,那么当您尝试时发生了什么? - Martin Smith
@MartinSmith 当我将这个属性添加到连接字符串中时,似乎它不起作用,因为我收到以下错误信息:io.r2dbc.mssql.ExceptionFactory$MssqlPermissionDeniedException: 目标数据库当前仅在应用程序意图设置为只读时才可访问连接 - Farinaz Kiani
1
r2dbc-mssql 是一个 TDS 客户端实现,它不包装 JDBC 连接或类似的内容。你会在 Login7.java 中注意到有一个声明了但未使用的 LOGIN_READ_ONLY_INTENT 标志。我认为这是一个相当明确的指示,表明它实际上并不支持 ApplicationIntent=ReadOnly - AlwaysLearning
1个回答

0
感谢@AlwaysLearning,在探索各种选择并寻找解决方案后,我主动编辑了"mssql-r2dbc"源代码。
我深入研究了代码库,并进行了必要的修改,以支持SQL Server连接中的"ApplicationIntent=ReadOnly"参数。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接