如何显示和关闭所有活动的RJDBC连接

时间:2015-11-02 23:07:18

标签: sql-server r jdbc mssql-jdbc rjdbc

我们已经采用了RJDBC的速度(超过RODBC)但是在确保所有开放数据库连接在R会话结束时关闭时遇到了问题。问题是在批量运行之后,我们通常会有100多个睡眠数据库连接。我们的服务器正在运行Microsoft SQL Server 2012.

连接字符串的格式为:

drv <<- JDBC("com.microsoft.sqlserver.jdbc.SQLServerDriver", "C:/Program Files/Microsoft JDBC Driver 4.2 for SQL Server/sqljdbc_4.2/enu/sqljdbc42.jar")
dbConnection <<- dbConnect(drv, "jdbc:sqlserver://s26",integratedSecurity=TRUE,databaseName="XXXXXX")

如何确保关闭所有活动的数据库连接?我发现了一个函数,如果我使用RMySQL,它似乎会起作用,但我不是。 RJDBC文档也没有描述任何列出连接的方法,因此可以关闭它们。此外,常见的DBI函数dbListConnections()似乎不适用于RJDBC。

你的帮助是适用的!

1 个答案:

答案 0 :(得分:2)

我知道这个问题是在不久前被问到的,但是如果其他人正在寻找解决方案,我会回答这个问题。

您可以检查全局变量是否为JDBC连接并关闭它 以下是我所做的示例代码:

    var <- as.list(.GlobalEnv)
    var_names <- names(var)

    for (i in seq_along(var_names)){
        if (class(var[[var_names[i]]]) == "JDBCConnection"){
            dbDisconnect(var[[var_names[i]]])
        }
    }