从R连接到命名的SQL Server 2016实例

时间:2016-07-28 13:26:05

标签: r connection-string rstudio sql-server-2016

我试图连接到RStudio中的SQL Server 2016数据库。我在笔记本电脑上使用RStudio。我可以远程访问服务器并在那里安装RStudio,如果它是绝对必要的,但在本地工作有很大的优势,所以我真的更喜欢它,如果可能的话。与服务器的连接通过我在笔记本电脑上运行的VPN(FortiClient)。

在此服务器上,有两个SQL Server实例。一个是SQL Server 2012版本,它是默认实例,因此未命名 - 它曾经是此服务器上的唯一实例。另一个是2016年版。此实例最近已设置为使用SQL Server 2016新增的R集成功能。由于服务器已有默认实例,因此必须对此实例进行命名,因此称为DEVR

当我访问SSMS中的实例并单击“属性”时,默认实例的名称为DWH-ACC,2016实例名为DWH-ACC\DEVR

这是我在RStudio中运行的代码,用于测试我的连接:

server <- "[IP-ADDRESS]\\DWH-ACC\\DEVR"
databaseName <- "Database"
user <- "user"
pwd <- "password"
sqlShareDir <- "C:\\Dir"
sqlWait <- TRUE
sqlConsoleOutput <- FALSE
sampleDataQuery <- "SELECT TOP 10 FROM [dbo].[Table]"

cc <- RxInSqlServer(server = server, databaseName = databaseName, user = user, password = pwd, shareDir = sqlShareDir, wait = sqlWait, consoleOutput = sqlConsoleOutput)
rxSetComputeContext(cc)

inDataSource <- RxSqlServerData(sqlQuery = sampleDataQuery, server=server, databaseName=databaseName, user=user, password=pwd, stringsAsFactors=TRUE, rowsPerRead=500)

rxGetVarInfo(data = inDataSource)

我已经为服务器规范尝试了几个选项,其中[IP-ADDRESS]\\DEVR[IP-ADDRESS]/DEVR两者都不起作用。这是我运行代码时遇到的错误:

[Microsoft][ODBC SQL Server Driver][DBNETLIB]The SQL-Server does not exist or permission has been denied.

Could not open data source.

ODBC Error in SQLDisconnect

(顺便说一下,荷兰语翻译的消息 - 这可能不是英文版软件中的确切错误文本)

当我尝试简单地将IP地址作为我的服务器连接字符串时,我得到一个不同的错误,似乎表明它能够找到实例(2012年,即错误的实例),但无法处理查询。

[Microsoft][ODBC-stuurprogrammabeheer] Fout in functievolgorde

我不确定如何翻译这个,但它似乎与ODBC驱动程序有关,并且在功能顺序&#34;中表示错误。无论如何,这个错误是无关的,我不需要它解决或解释,它只是表明R似乎能够连接到默认实例,但不能连接到较新的,命名的实例。

2 个答案:

答案 0 :(得分:1)

为启动板帐户启用隐含身份验证

专门从控制面板导航到用户帐户,您将看到具有20个帐户的SQLR用户组。

在具有写访问权限的服务器和数据库表上允许这些。

那应该看对你了。祝你好运

答案 1 :(得分:0)

您可以在本地实例中创建ODBC连接。可以找到有关创建ODBC连接的教程here。可以找到有关不同类型的SQL Server ODBC连接的背景here。 ODBC连接应该能够区分不同的SQL Server实例。

对我来说,使用ODBC连接的主要优点是我不必将数据库密码存储在R脚本内/附近。

在R / Rstudio中,您可以通过ODBC通道连接到SQL Server实例。关于ODBC通道和RevoScaleR的教程:link。 R中的其他包也提供连接到ODBC连接的可能性,例如:RODBCdplyr