我正在尝试使用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
注意:表和数据库的名称已更改。
答案 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端口!