无法使用RSQLserver

时间:2016-11-09 19:35:07

标签: sql-server r

我正在尝试使用RSQLServer并首先使用R studio安装RSQLServer。然后我试着像这样使用它。

library(RSQLServer)
library(DBI)
drv <- dbDriver("SqlServer")
conn <- dbConnect(drv, url = "Server=**MYSERVERURL;database=DBName;trusted_connection=yes;")
res <- dbSendQuery(conn, "SELECT TOP 100 * FROM test_table (NOLOCK)")
str(res)

但我每次都会收到错误。我错过了什么吗?错误是找不到对象。?我是否需要先配置任何驱动程序(可能是jTDS)?如果是的话,任何人都可以分享步骤吗?谢谢。

错误文字

> conn <- dbConnect(drv, url = "Server=**MYSERVERURL;database=DBName;trusted_connection=yes;")
Error in dbConnect(drv, url = "Server=**MYSERVERURL;database=DBName;trusted_connection=yes;") : 
  object 'drv' not found
> res <- dbSendQuery(conn, "SELECT TOP 100 * FROM test_table (NOLOCK)")
Error in dbSendQuery(conn, "SELECT TOP 100 * FROM test_table (NOLOCK)") : 
  object 'conn' not found
> str(res)
Error in str(res) : object 'res' not found

注意:表和数据库的名称已更改。

1 个答案:

答案 0 :(得分:1)

尝试使用

drv <- RSQLServer::SQLServer()

而不是

drv <- dbDriver("SqlServer")

您必须已下载并安装了jTDS driver

对于Windows身份验证,您还必须安装DLL:

  

如果您打算使用集成安全性(Windows身份验证)   验证您的服务器会话,您将需要下载jTDS和   将库(ntlmauth.dll)上的本机单一标志复制到任何   系统路径上的位置(例如Sys.getenv(“PATH”))。

来源:https://cran.r-project.org/web/packages/RSQLServer/RSQLServer.pdf

您的JDBC连接字符串看起来很奇怪,请确保您的JDBC连接字符串正确。

如果您使用的是jTDS驱动程序,则连接字符串语法为 与Microsoft的JDBC驱动程序不同

这里指定了jTDS语法:

http://jtds.sourceforge.net/faq.html#urlFormat

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

“sqlserver”。

此处指定了Microsoft JDBC语法,但我认为它不起作用,因为 RSQLServer is based on the cross-platform jTDS JDBC driver

https://msdn.microsoft.com/en-us/library/ms378428(v=sql.110).aspx

示例:

jdbc:sqlserver://localhost;databaseName=AdventureWorks;integratedSecurity=true;

将“localhost”部分替换为IP地址或服务器名称,例如“myServer.honey.moon.com”,如果实例的非标准IP端口(不是1433)使用“localhost:1234”。

您可以通过查看用于通过SQL Server Management Studio连接到数据库的连接字符串来确定IP端口!