Ошибка подключения к sql серверу с docker, rbase и RODBC - PullRequest
0 голосов
/ 01 мая 2020

Я пытаюсь получить доступ к SQL Серверу по локальной сети anet с помощью R, где R загружается в docker файл с R-base.

На моем рабочем столе я создайте драйвер ODB C, и он распознает мои windows учетные данные со следующими данными:

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

Используя R-base, после долгих проб и ошибок мне удалось установить RODB C , но я не знаю, как подключиться к этому серверу.

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")

Как подключиться к серверу SQL из файла docker?

---------- Обновление

после создания контейнера docker в Ubuntu я обнаружил, что не могу пропинговать имя сервера. Однако я был в состоянии пинговать IP-адрес сервера.

Я изменил строку поиска для проверки связи с IP-адресом и изменил драйвер следующим образом:

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

Это все еще не работает.

...