我可以使用JDBC将Micrososft SQL Server设置为只读吗



我正在制作一个Clojure库,该库在Docker映像中运行Microsoft SQL Server。我使用的是图片2019-CU14-ubuntu-204。

有一个JDBC宏with-db-transaction可以采用只读参数。这适用于PostgreSQL映像,但不适用于Microsoft SQL Server。是否有某种方法可以将与SQL Server的连接设置为只读?

JDBC没有只读事务的概念,但它确实支持只读连接(但仅作为提示,因此不一定需要底层数据库或驱动程序的支持(。一些驱动程序忽略此提示,而另一些驱动程序则使用它来启动只读事务。

Microsoft SQL Server JDBC驱动程序不支持它;Connection.setReadOnly(boolean)SQLServerConnection中的实现没有任何作用:

@Override
public void setReadOnly(boolean readOnly) throws SQLServerException {
if (loggerExternal.isLoggable(Level.FINER))
loggerExternal.entering(loggingClassName, "setReadOnly", readOnly);
checkClosed();
// do nothing per spec
loggerExternal.exiting(loggingClassName, "setReadOnly");
}

换句话说,不,不可能将SQL Server的连接设置为只读。

最新更新