使用 docker、rbase 和 RODBC 连接到 sql 服务器时出错
Error connecting to sql server with docker, rbase, and RODBC
我正在尝试使用 R 访问本地 Intranet 上的 SQL 服务器,其中 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')
这仍然没有用。
我认为如果您将驱动程序更改为 FreeTDS,这会起作用。 R 不支持 Sql 服务器驱动程序,除非它是专业计划。
我不知道如何使用 docker 虚拟机中 docker 主机的 Windows 凭据连接到数据库。
我必须为数据库创建用户名和密码并与之连接。
我正在尝试使用 R 访问本地 Intranet 上的 SQL 服务器,其中 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')
这仍然没有用。
我认为如果您将驱动程序更改为 FreeTDS,这会起作用。 R 不支持 Sql 服务器驱动程序,除非它是专业计划。
我不知道如何使用 docker 虚拟机中 docker 主机的 Windows 凭据连接到数据库。
我必须为数据库创建用户名和密码并与之连接。