nanodbc 从 Linux 连接到 MSSQL
nanodbc connecting to MSSQL from Linux
当我尝试从 Linux 连接到 MSSQL 时收到 "Invalid attribute value"。
我当前的 /etc/odbcinst.ini 文件如下所示:
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
Trace=yes
TraceFile=/home/mercury/Desktop/tracefile.txt
UsageCount=1
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.2
UsageCount=1
我的 /etc/odbc.ini 文件如下所示(信息已删除):
[TestServer]
Driver = ODBC Driver 17 for SQL Server
Server = $IP, $PORT
Database = $DATABASE
UserName = $Username
Password = $Password
如果我运行 isql,我可以用这个命令连接:
isql -v TestServer $Username $Password
在我与 nanodbc 建立连接之前,我打印出将要使用的连接字符串:
DRIVER={ODBC Driver 17 for SQL Server};SERVER=$Server,$Port;DATABASE=$Database;Uid=$Username;Pwd=$Password
然后我会这样做:
nanodbc::connection(连接字符串);这是我得到
的地方
[unixODBC][Driver Manager]Invalid attribute value
错误信息。
所以在很长一段时间后,这被证明是 Ubuntu 16.04 的问题。
Ubuntu 16.04 上的 unixodbc 报告其版本错误,因此在编译 nanodbc 时它使用了错误版本的 unixodbc。
要解决此问题,请使用此 cmake 标志重新编译 nanodbc:
例如:
mkdir build
cd build && cmake .. -DNANODBC_ODBC_VERSION=SQL_OV_ODBC3
这解决了我的问题。
为了将来参考,这张票就是答案:https://github.com/lexicalunit/nanodbc/issues/149
当我尝试从 Linux 连接到 MSSQL 时收到 "Invalid attribute value"。
我当前的 /etc/odbcinst.ini 文件如下所示:
[ODBC Driver 17 for SQL Server]
Description=Microsoft ODBC Driver 17 for SQL Server
Driver=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.1.so.0.1
Trace=yes
TraceFile=/home/mercury/Desktop/tracefile.txt
UsageCount=1
[ODBC Driver 13 for SQL Server]
Description=Microsoft ODBC Driver 13 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.1.so.9.2
UsageCount=1
我的 /etc/odbc.ini 文件如下所示(信息已删除):
[TestServer]
Driver = ODBC Driver 17 for SQL Server
Server = $IP, $PORT
Database = $DATABASE
UserName = $Username
Password = $Password
如果我运行 isql,我可以用这个命令连接:
isql -v TestServer $Username $Password
在我与 nanodbc 建立连接之前,我打印出将要使用的连接字符串:
DRIVER={ODBC Driver 17 for SQL Server};SERVER=$Server,$Port;DATABASE=$Database;Uid=$Username;Pwd=$Password
然后我会这样做: nanodbc::connection(连接字符串);这是我得到
的地方[unixODBC][Driver Manager]Invalid attribute value
错误信息。
所以在很长一段时间后,这被证明是 Ubuntu 16.04 的问题。 Ubuntu 16.04 上的 unixodbc 报告其版本错误,因此在编译 nanodbc 时它使用了错误版本的 unixodbc。 要解决此问题,请使用此 cmake 标志重新编译 nanodbc: 例如:
mkdir build
cd build && cmake .. -DNANODBC_ODBC_VERSION=SQL_OV_ODBC3
这解决了我的问题。 为了将来参考,这张票就是答案:https://github.com/lexicalunit/nanodbc/issues/149