首页 > 解决方案 > 如何减少 R 中 SQL 查询的错误?

问题描述

这是我的功能

         getSQL <- function(server="server name", database="database name", Uid=" 
        user name", Pwd="password", Query){
        conlink <- paste('driver={SQL Server};server=', server,';database=',database,';Uid=', Uid, 
        ';Pwd=', Pwd,';Encrypt=True;TrustServerCertificate=False', sep="")
        conn <- odbcDriverConnect(conlink)
       dat <- sqlQuery(channel= conn, Query, stringsAsFactors = F)
       odbcCloseAll()
       return(dat)
           }

当我使用调用函数时

  query.cut = "SELECT [measurename] 
       ,[OrgType]
     ,[year_session]
       ,[Star]
      ,[cutvalue]
      ,[Date]
      ,[File]
       FROM [database name].[dbo].[DST_Merged_Cutpoint]
       ORDER BY [year_session] DESC
          " 
        getSQL(Query=query.cut)

我收到此错误:

sqlQuery(conn, Query, stringsAsFactors = F) 中的错误:
第一个参数不是开放的 RODBC 通道

另外:警告消息:
1:在 odbcDriverConnect(conlink) 中:
[RODBC] 错误:状态 28000,代码 18456,消息 [Microsoft][ODBC SQL Server Driver][SQL Server] 用户“insightm8”登录失败。
2:在 odbcDriverConnect(conlink) 中:
[RODBC] 错误:状态 01S00,代码 0,消息 [Microsoft][ODBC SQL Server Driver]无效的连接字符串属性
3:在 odbcDriverConnect(conlink)
中:sqlQuery(conn,Query,stringsAsFactors = F) :
第一个参数不是开放的 RODBC 通道

我该如何解决这些错误?提前致谢

标签: rsql-server

解决方案


注意不要在以下位置添加空格UID

服务器]用户“insightm8”登录失败。

在连接上重现此SQL Server错误会产生相同的错误。

尝试使用paste0而不是paste

conlink <- paste0('driver={SQL Server};server=', server,';database=',database,';Uid=', Uid, 
        ';Pwd=', Pwd,';Encrypt=True;TrustServerCertificate=False', sep="")

推荐阅读