显示所有打开的 RODBC 连接

Posted

技术标签:

【中文标题】显示所有打开的 RODBC 连接【英文标题】:Show all open RODBC connections 【发布时间】:2014-08-27 14:51:21 【问题描述】:

有人知道怎么做吗? showConnections 不会列出来自 odbcConnect 的任何打开的连接。

【问题讨论】:

【参考方案1】:

您可以通过以下方式缩小搜索范围,这将返回您当前环境中属于 RODBC 类的所有变量。

envVariables<-ls()
bools<-sapply(envVariables, function(string)
        class(get(string))=="RODBC"
    )

rodbcObj<-envVariables[bools]

虽然关闭的连接仍然属于 RODBC 类,所以这里还有一些工作要做。

我们可以使用 trycatch 定义一个函数,该函数将尝试获取关联的 RODBC 对象的连接信息。如果是打开的连接,那么这个命令就可以正常运行,我们返回变量名的字符串。

如果 RODBC 对象不是一个打开的连接,这将抛出一个错误,我们会捕获该错误,并以我实现的方式返回 NA。你可以在这里返回任意数量的东西。

openConns<-function(string)

   tryCatch(
            result<-odbcGetInfo(get(string))
            string
        , error = function(e)
            NA
        )

然后我们删除对应于错误的返回值。就我而言,NA,所以我在返回时执行 na.omit。

na.omit(sapply(rodbcObj, openConns))

或者

result<-sapply(rodbcObj, openConns)
result[!is.na(result)]

如有任何问题或相关问题,请告诉我

-DMT

【讨论】:

要检查 RODBC“通道”的连接状态,您可以调用私有函数 RODBC:::odbcValidChannel(三个冒号!!!),因为它在 RODBC 中被广泛使用,所以您可以期望它是稳定的(不知道为什么在RODBC中公开了这么重要的功能)。包RODBCext 具有类似的功能,但在包内也是私有的。

以上是关于显示所有打开的 RODBC 连接的主要内容,如果未能解决你的问题,请参考以下文章

运行 randomForestSRC 后 RODBC 失去连接

RODBC 连接无效

SQL Server 2014 RODBC 连接

RODBC 连接问题

“升级”到 Office 365 专业增强版后的 RODBC 连接

RODBC - 连接字符串添加用户名和密码