【发布时间】:2019-12-11 20:51:22
【问题描述】:
尝试使用来自mssql-tools 包的sqlcmd(松散地遵循此处的文档:https://github.com/mkleehammer/pyodbc/wiki/Connecting-to-SQL-Server-from-RHEL-6-or-Centos-7)并看到错误
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:未找到数据源名称且未指定默认驱动程序。
即使我认为 DSN 和驱动程序都已指定(见下文)
[airflow@airflowetl ~]$
[airflow@airflowetl ~]$
[airflow@airflowetl ~]$ # trying to connect to DB via DSN (-S option)
[airflow@airflowetl ~]$ /opt/mssql-tools/bin/sqlcmd -Q "select count(*) from MYTABLE" -D -S "MyMSSQLServer" -U "myuser" -P "mypass" -d mydb -W -h-1 -k
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Data source name not found and no default driver specified.
[airflow@airflowetl ~]$
[airflow@airflowetl ~]$
[airflow@airflowetl ~]$ # checking odbc config files
[airflow@airflowetl ~]# odbcinst -j
unixODBC 2.3.7
DRIVERS............: /etc/odbcinst.ini
SYSTEM DATA SOURCES: /etc/odbc.ini
FILE DATA SOURCES..: /etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 8
SQLLEN Size........: 8
SQLSETPOSIROW Size.: 8
[airflow@airflowetl ~]$ cat /etc/odbc.ini
[MyMSSQLServer]
Driver=ODBC Driver 17 for SQL Server
Description=My MS SQL Server
Trace=No
Server=172.18.1.23
[airflow@airflowetl ~]$ cat /etc/odbcinst.ini
[airflow@airflowetl ~]$ ls -lha /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1
-rwxr-xr-x 1 root root 2.0M Sep 26 06:19 /opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.4.so.2.1
请注意,/etc/odbcinst.ini 在(我认为)它应该对应于 odbc.ini 文件中的驱动程序条目时是空白的。我应该手动填写吗?为什么在这种情况下它不自动填充(就像在我设置了 odbc 的其他机器上所做的那样)?
没有太多的 ODBC 设置经验,因此不知道如何解决此错误。有更多经验的人有任何进一步的调试技巧或知道如何修复吗?
【问题讨论】:
-
根据以前机器上的 odbc* 文件手动填写 /etc/odbcinst.ini 似乎已经解决了问题。仍然不确定为什么 odbcinst.ini 文件没有自动填充。请参阅 serverfault.com/a/622088/456930。