我可以使用 JDBC 将 Microsoft SQL 服务器设置为只读吗?
Can I use JDBC to set Micrososft SQL Server read only?
我正在制作一个在 Docker 映像中运行 Microsoft SQL 服务器的 Clojure 库。我正在使用图像 2019-CU14-ubuntu-20.04.
有一个 JDBC 宏 with-db-transaction
可以接受只读参数。这适用于 PostgreSQL 图像,但不适用于 Microsoft SQL 服务器。有什么方法可以将与 SQL 服务器的连接设置为只读吗?
JDBC 没有 read-only 事务的概念,但它确实支持 read-only 连接(但仅作为提示,因此不一定需要支持基础数据库或 driver)。一些 driver 忽略此提示,而其他人则使用它来启动 read-only 事务。
微软SQL服务器JDBCdriver不支持; SQLServerConnection
中 Connection.setReadOnly(boolean)
的实现什么都不做:
@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 服务器将连接设置为 read-only。
我正在制作一个在 Docker 映像中运行 Microsoft SQL 服务器的 Clojure 库。我正在使用图像 2019-CU14-ubuntu-20.04.
有一个 JDBC 宏 with-db-transaction
可以接受只读参数。这适用于 PostgreSQL 图像,但不适用于 Microsoft SQL 服务器。有什么方法可以将与 SQL 服务器的连接设置为只读吗?
JDBC 没有 read-only 事务的概念,但它确实支持 read-only 连接(但仅作为提示,因此不一定需要支持基础数据库或 driver)。一些 driver 忽略此提示,而其他人则使用它来启动 read-only 事务。
微软SQL服务器JDBCdriver不支持; SQLServerConnection
中 Connection.setReadOnly(boolean)
的实现什么都不做:
@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 服务器将连接设置为 read-only。