К сожалению, я не смогу создать хорошее воспроизведение для этой проблемы, не поделившись конфиденциальными кредитами с базой данных, с которой у меня проблемы. Надеюсь, у меня есть достаточно информации ниже, чтобы отметить любые очевидные проблемы, которые поймут специалисты по ODBC.
Фон
У меня MacBook Pro со следующими характеристиками:
Model Name: MacBook Pro
Model Identifier: MacBookPro15,1
Processor Name: 6-Core Intel Core i7
Processor Speed: 2.6 GHz
Number of Processors: 1
Total Number of Cores: 6
L2 Cache (per Core): 256 KB
L3 Cache: 9 MB
Hyper-Threading Technology: Enabled
Memory: 32 GB
Boot ROM Version: 1037.0.78.0.0 (iBridge: 17.16.10572.0.0,0)
Мое соединение ODBC установлено с использованием FreeTDS, как указано здесь а>.
Соответствующая часть freetds.conf
выглядит следующим образом:
# The POC SQL Server
[POC]
host = 172.22.238.154
port = 1433
tds version = 7.3
Мой файл odbcinst.ini
выглядит следующим образом:
[FreeTDS]
Description=FreeTDS Driver for Linux & SQL Server
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
UsageCount=1
Мой файл odbc.ini
указан следующим образом:
[POC]
Description = Connecton to Partners for our children SQL Server
Driver = FreeTDS
Servername = POC
Я пытаюсь подключиться к базе данных SQL Server 2012 (через VPN), используя следующую информацию о подключении в R:
con <- DBI::dbConnect(odbc::odbc()
,dsn = "POC"
,uid = Sys.getenv("MSSQL_UN")
,database = "CA_ODS"
,pwd = Sys.getenv("MSSQL_PW"))
Это создает следующий объект соединения:
> con
<OdbcConnection> POC2
Database: CA_ODS
Microsoft SQL Server Version: 11.00.7001
В общем, это соединение работает как положено. Я могу запросить базу данных, используя DBI::dbGetQuery(con, "select * from MyTable")
, dplyr::tbl(con, MyTable)
и т. д. без проблем.
Проблема
Однако RStudio отображает только каждую вторую букву объектов базы данных и усекает имена объектов после первых нескольких букв. Следующий снимок экрана должен хорошо иллюстрировать проблему:
База данных, к которой я пытаюсь подключиться, называется CA_ODS
. Однако обозреватель объектов RStudio отображает только каждую вторую букву имени базы данных (т. е. DB указан как C_D
).
Похоже, что это не ограничивается RStudio как таковой. Хотя результаты фактических запросов к базе данных работают нормально, как описано выше, возвращенные имена из INFORMATION_SCHEMA
кажутся соответствующими информации в обозревателе объектов. Ниже при запуске непосредственно из SQL Server Management Studio возвращаемое TABLE_CATALOG
равно CA_ODS
, TABLE_SCHEMA
равно ndacan
и т. д. Однако при запуске через соединение с БД я получаю следующее.
> DBI::dbGetQuery(con, "SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE
TABLE_SCHEMA='ndacan'")
TABLE_CATALOG TABLE_SCHEMA TABLE_NAME TABLE_TYPE
1 C_D naa f21v BASE TABLE
Вопрос
Любые предложения относительно того, как я могу повторно указать свое соединение ODBC в R или в моих конфигурациях FreeTDS, чтобы получить полное имя возвращаемых объектов базы данных?
odbc
из исходного кода (не двоичный файл CRAN). - person r2evans   schedule 25.10.2019install.packages("odbc", type = 'source')
) - person joemienko   schedule 25.10.2019odbc
для установки из исходного кода.xcode-select --install
должен помочь XCode - person joemienko   schedule 25.10.2019