使用 docker、rbase 和 RODBC 连接到 sql server 时出错

Posted

技术标签:

【中文标题】使用 docker、rbase 和 RODBC 连接到 sql server 时出错【英文标题】:Error connecting to sql server with docker, rbase, and RODBC 【发布时间】:2020-04-30 23:09:52 【问题描述】:

我正在尝试使用 R 访问本地 Intranet 上的 SQL Server,其中 R 加载到带有 R-base 的 docker 文件中。

在我的桌面上,我创建了一个 ODBC 驱动程序,它通过以下方式识别我的 Windows 凭据:

odbcDriverConnect('driver=SQL Server;server=<serverName>;database=<dbName>;trusted_connection=yes')

使用 R-base,经过大量试验和错误后,我能够安装 RODBC,但我不知道如何连接到此服务器。

Warning messages:
[RODBC] ERROR: state 01000, code 0, message [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found

DockerFile,它是经过大量试验和错误构建的。我敢肯定其中大部分是多余的。我还公开了一些我发现做一些研究的端口,但我不知道是否需要公开它们。


FROM openanalytics/r-base

# system libraries of general use
RUN apt-get update && apt-get install -y \
    sudo \
    libcairo2-dev \
    libxt-dev \
    libcurl4-gnutls-dev \
    libssl-dev \
    libssh2-1-dev \
    libssl1.0.0 
# RODBC
RUN apt-get update && \
    apt-get install -y --no-install-recommends \
    unixodbc \
    unixodbc-dev \
    unixodbc \
    unixodbc-dev \
    r-cran-rodbc \
    apt-transport-https \
    libssl-dev \
    libsasl2-dev \
    openssl \
    curl \
    unixodbc \
    gnupg \
    libc6 libc6-dev libc6-dbg

RUN curl https://packages.microsoft.com/keys/microsoft.asc | apt-key add -
RUN curl https://packages.microsoft.com/config/ubuntu/18.04/prod.list > /etc/apt/sources.list.d/mssql-release.list
#RUN curl https://packages.microsoft.com/config/ubuntu/19.10/prod.list > /etc/apt/sources.list.d/mssql-release.list
RUN apt-get update -y
RUN ACCEPT_EULA=Y apt-get install -y msodbcsql17 unixodbc-dev mssql-tools


EXPOSE 3838
EXPOSE 8787

构建文件后,我进入 R studio 并使用install.packages("RODBC")

如何从 docker 文件连接到 SQL 服务器?

---------更新

使用 Ubuntu 创建 docker 容器后,我发现无法 ping 服务器名称。但是,我能够 ping 服务器 IP 地址。

我修改了搜索字符串ping ip地址,并更改了驱动,如下:

odbcDriverConnect('driver=ODBC Driver 17 for SQL Server;server=<serverName>;database=<dbName>;trusted_connection=yes')

这仍然不起作用。

【问题讨论】:

【参考方案1】:

我不知道如何使用 docker 虚拟机内的 docker 主机的 Windows 凭据连接到数据库。

我必须为数据库创建一个用户名和密码并与之连接。

【讨论】:

【参考方案2】:

我认为如果您将驱动程序更改为 FreeTDS,这将起作用。 R 不支持 Sql Server 驱动程序,除非它是专业计划。

【讨论】:

以上是关于使用 docker、rbase 和 RODBC 连接到 sql server 时出错的主要内容,如果未能解决你的问题,请参考以下文章

通过 RODBC 连接到 SQL Server 数据库

使用 R studio 连接到 dashDB 的 RODBC

尝试使用 RODBC 将 R 连接到 PostgreSQL 时出错

RODBC 连接到 Mavericks 上的 SQL Server

RODBC 包的替代方案,用于从 R 连接到 MS Access

从 mac osx 10.11 连接到带有 RODBC 的 MS SQL 服务器