R studio windows и соединение unix с Microsoft SQL Server

Я могу подключиться со своего ноутбука (окна) к базе данных, используя приведенные ниже данные.

conn2 <- DBI::dbConnect(odbc::odbc(),
                        Driver   = "ODBC Driver 17 for SQL Server",
                        Server   =  "XXXX" ,
                        Database = "XXXX",
                        Trusted_Connection = "yes")

но когда я пытаюсь подключиться к rstudio pro, который использует машину linux / unix, тот же код дает мне ошибку

conn2 <- DBI::dbConnect(odbc::odbc(),
                        Driver   = "ODBC Driver 17 for SQL Server",
                        Server   =  "XXXX" ,
                        Database = "XXXX",
                        Trusted_Connection = "yes")

Ошибка

Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired  [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]MAX_PROVS: Error Locating Server/Instance Specified [xFFFFFFFF].   [unixODBC][Microsoft][ODBC Driver 17 for SQL Server]A network-related or instance-specific error has occurred while establishing a connection to SQL Server. Server is not found or not accessible. Check if instance name is correct and if SQL Server is configured to allow remote connections. For more information see SQL Server Books Online.

Я использовал тот же код, и детали верны, так как я могу установить соединение через оконный компьютер, не уверен, в чем проблема, я также попытался изменить драйвер с ODBC Driver 17 для SQL Server на SQL Server

и получил эту ошибку

Error: nanodbc/nanodbc.cpp:983: 00000: [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found

Я не уверен, как решить эту проблему, был бы признателен, если бы кто-нибудь мог мне помочь, используя тот же синтаксис / библиотеку DBI :: dbConnect и odbc библиотеки, что и мне нужно прочитать и записать в таблицу, что очень быстро с использованием dbWriteTable, поскольку мой набор данных огромен.

Список установленных драйверов

введите описание изображения здесь


person Dexter1611    schedule 18.09.2020    source источник


Ответы (1)


Вам необходимо дважды проверить, установлен ли драйвер ODBC на этом компьютере, и использовать его. Запустите odbc::odbcListDrivers(), чтобы перечислить все доступные вам драйверы. На моей машине результат выглядит так:

odbc::odbcListDrivers()
#>                             name         attribute
#> 1                   ODBC Drivers PostgreSQL Driver
#> 2              PostgreSQL Driver            Driver
#> 3              PostgreSQL Driver         FileUsage
#> 4              PostgreSQL Driver         Threading
#> 5              SQL Server Driver       Description
#> 6              SQL Server Driver            Driver
#> 7              SQL Server Driver       DontDlClose
#> 8                         SQLite       Description
#> 9                         SQLite            Driver
#> 10                        SQLite             Setup
#> 11                        SQLite        UsageCount
#> 12                       SQLite3       Description
#> 13                       SQLite3            Driver
#> 14                       SQLite3             Setup
#> 15                       SQLite3        UsageCount
#> 16 ODBC Driver 17 for SQL Server       Description
#> 17 ODBC Driver 17 for SQL Server            Driver
#> 18 ODBC Driver 17 for SQL Server        UsageCount
#>                                                        value
#> 1                                                  Installed
#> 2                                               psqlodbcw.so
#> 3                                                          1
#> 4                                                          2
#> 5                                             FreeTDS driver
#> 6               /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
#> 7                                                          1
#> 8                                         SQLite ODBC Driver
#> 9                                           libsqliteodbc.so
#> 10                                          libsqliteodbc.so
#> 11                                                         1
#> 12                                       SQLite3 ODBC Driver
#> 13                                         libsqlite3odbc.so
#> 14                                         libsqlite3odbc.so
#> 15                                                         1
#> 16                   Microsoft ODBC Driver 17 for SQL Server
#> 17 /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.6.so.1.1
#> 18                                                         1

Создано 19 сентября 2020 г. пакетом REPEX (v0.3.0)

Значения в столбце name (например, драйвер Microsoft ODBC 17 для SQL Server) являются возможными значениями аргумента Driver для DBI::dbConnect(). Если драйвер не установлен, вам нужно попросить кого-нибудь с достаточными правами установить его для вас на RStudio Server Pro.

person krlmlr    schedule 19.09.2020
comment
Установлен драйвер Microsoft ODBC 17 для SQL Server. - person Dexter1611; 20.09.2020
comment
Можете ли вы запустить isql в терминале на сервере RStudio? - person krlmlr; 21.09.2020
comment
добавлена ​​ссылка ниже после использования фрагмента isql из терминала imgur.com/a/N9M4QT1 - person Dexter1611; 21.09.2020
comment
Значения /opt/... в столбце value в odbcListDrivers() представляют файлы. Они существуют? Вы также можете попробовать подключиться к базе данных с помощью isql, чтобы узнать, что не так. В конечном итоге, если это проблема с установкой, вам нужно будет поговорить с человеком / организацией, которые поддерживают установку RStudio Server Pro. - person krlmlr; 21.09.2020