我有一个R闪亮的应用程序在本地工作,但当我上传它时,我得到错误:
first argument is not an open RODBC channel
这是我的代码:
conn<- suppressWarnings( odbcDriverConnect('driver={SQL Server};server=SWDCH; database=GR; trusted_connection=yes;uid=RUser , pwd=ruser'))
data <- sqlQuery(conn,paste("exec Performance @MetricType = '", MetricType ,"',@Metric = '", Metric ,"', @Market = '", Market , "', @StartDate = '", StartDate, "', @EndDate = '", EndDate, "';",sep =""),errors=FALSE)
我认为这个问题与conn对象有关,但不知道问题是什么?
答案 0 :(得分:1)
我遇到了一个相同的问题,现在我已经解决了。如果这对您有用,请告诉我。
问题似乎是&#34;默认&#34;通过Shiny引用的连接。我正在运行以下在本地运行的代码,但是给了我相同的&#34; RODBC连接未打开&#34;
时出错 在Shiny中不起作用:
tdConnection2&lt; - odbcConnect(&#34; my_dsn&#34;,eid =&#34; ABC123&#34;,pw =&#34;密码)
结果&lt; - sqlQuery(&#34;运行此SQL&#34;)
我能够通过显式引用tdQuery()函数中引用的通道来修复所有内容,如下所示
在Shiny中工作:
tdConnection2&lt; - odbcConnect(&#34; my_dsn&#34;,eid =&#34; ABC123&#34;,pw =&#34;密码)
结果&lt; - sqlQuery(channel = tdConnection2,query =&#34;运行此SQL&#34;)
我通过像print(tdConnection2)这样的事情来诊断这个,这表明我已成功建立初始连接。由于R引用的默认版本的python,我的rPython无法正常工作,所以让我想一想Shiny可能引用的默认版本/驱动程序。希望这也能解决你的问题。
答案 1 :(得分:0)
在PC,ODBC数据源中创建sqlserver ODBC连接。 使用下面的代码片段将数据连接并存储到反应变量中。
data <- reactive({
ch <- odbcConnect(dsn = "DSNName", uid = "username", pwd = "password")
sqlQuery(ch,paste('select * from emp ')
})
DSNName是创建的sql服务器ODBC的名称。