C++ nanodbc从Linux连接到MSSQL

C++ nanodbc从Linux连接到MSSQL,c++,linux,unixodbc,nanodbc,C++,Linux,Unixodbc,Nanodbc,当我尝试从Linux连接到MSSQL时,得到了一个“无效属性值” 我当前的/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/Deskt

当我尝试从Linux连接到MSSQL时,得到了一个“无效属性值”

我当前的/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
My/etc/odbc.ini文件如下所示(已删除信息):

如果我运行isql,我可以使用以下命令连接:

isql -v TestServer $Username $Password
在使用nanodbc进行连接之前,我打印出将使用的连接字符串,即:

DRIVER={ODBC Driver 17 for SQL Server};SERVER=$Server,$Port;DATABASE=$Database;Uid=$Username;Pwd=$Password
然后我会: nanodbc::连接(connectionString);这就是我得到答案的地方

[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
这为我解决了这个问题。 作为将来的参考,这张票的答案是:

mkdir build
cd build && cmake .. -DNANODBC_ODBC_VERSION=SQL_OV_ODBC3