这是一个时间敏感/紧急问题。我有一些 R 代码,其中涉及使用 RODBC 包的许多 SQL 查询。这段代码每天早上都在专用的 Linux 服务器上运行——它会提取一些数据,进行一些统计,然后将数据重新插入 MSSQL DB。
今天,我们的 sysarch 升级到 Ubuntu 12.04.1,从那时起,我遇到了一堆 ODBC 问题。在进行了一些更改之后,我们得到了它,以便可以建立 ODBC 连接,但现在有一个更大的问题。基本上,每次执行 CREATE 或 DROP 命令时,我都会从 RODBC 收到错误消息,即使已创建/删除了已识别的表。示例(bts.connect
是 的结果odbcConnect([connection information])
):
> sqlQuery(bts.connect, "SELECT OBJECT_ID('tempdb.dbo.#tempscores')")
1 1050250967
所以#tempscores 表存在
> sqlQuery(bts.connect, "DROP TABLE #tempscores")
[1] "[RODBC] ERROR: Could not SQLExecDirect 'DROP TABLE #tempscores'"
即使它存在,我们也“不能”放弃它
> sqlQuery(bts.connect, "SELECT OBJECT_ID('tempdb.dbo.#tempscores')")
1 NA
但是我们已经放弃了它。
> sqlQuery(bts.connect, "CREATE TABLE #tempscores (dummy int)")
[1] "[RODBC] ERROR: Could not SQLExecDirect 'CREATE TABLE #tempscores (dummy int)'"
我们也无法创建它,但它存在并且我们可以从中选择:
sqlQuery(bts.connect, "SELECT OBJECT_ID('tempdb.dbo.#tempscores')") 1 1066251024 sqlQuery(bts.connect, "SELECT * FROM #tempscores") [1] dummy <0 rows> (或 0-length行名称)
我束手无策,我真的需要这个明天早上为客户成功运行。有人知道是什么导致了这种奇怪的行为吗?