更新:感谢Dan Guzman,问题已经解决了。
我犯了一个错误,并使用旧的遗产Driver={SQL Server};
,假设它是新的驱动程序。相反,我应该使用Driver={ODBC Driver 11 for SQL Server}
这是实际的新ODBC驱动程序。
我可以使用新驱动程序连接到(Localdb)\ v11.0 。
TL; TR :为什么我无法使用连接字符串中的新Driver={SQL Server};
连接到(Localdb)\ v11.0 ,但我可以连接如果我将驱动程序切换到旧的Driver={SQL Server Native Client 11.0};
?
我使用的其余连接字符串参数是(如果在C ++代码中使用,则反斜杠转义):
Server=(localdb)\v11.0;Integrated Security=True;
我正在尝试通过ODBC访问SQL Server并使用无DSN连接字符串调用SQLDriverConnect
。如果我将驱动程序切换到 SQL Server Native Client 11.0 ,那么我突然可以连接。
我还测试了使用%systemdrive%\Windows\System32\odbcad32.exe
生成FILEDSN,我观察到完全相同的问题。
我可以使用新Driver={SQL Server}
连接的唯一本地数据库是Server=DEVBOX\SQLEXPRESS
(如果在C ++代码中使用,则反斜杠转义,当然)。
我找不到任何确认新的SQL Server ODBC驱动程序不支持LocalDB。
仅在ODBC Driver for SQL Server for Linux
的常见问题解答中指出此版本的驱动程序使用SQL Server 2012的哪些功能 支持? Linux上的ODBC驱动程序支持SQL Server 2012中除LocalDB之外的所有服务器功能。
如何在Windows上使用新的ODBC驱动程序连接到LocalDB?
更新:
我正在使用Windows 10 Pro + VS2015。
我可以使用SQL Server Management Studio 2016(CTP)连接到(localdb)\v11.0
和DEVBOX\SQLEXPRESS
。
(MSDN论坛上提出了同样的问题,here。)
答案 0 :(得分:7)
ODBC驱动程序SQL Server
是Windows附带的旧版SQL Server ODBC驱动程序,用于向后兼容。最新的SQL Server ODBC驱动程序是ODBC Driver 11 for SQL Server
。我相信这个ODBC驱动程序与SQL Server 2016 CTP一起安装。已发布的版本以separate download提供。