【发布时间】:2017-01-31 16:29:20
【问题描述】:
这个问题更多的是关于“为什么”。当您在连接字符串中指定 DRIVER={SQL Server Native Client 11.0} 时,varchar(max) 列将返回空白。这个问题似乎多年来一直存在,并且存在一些解决方法。
虽然这些问题仍然存在似乎很疯狂,但有效的解决方法是:
https://stackoverflow.com/a/33883901/4258124
是改变连接字符串使用:
DRIVER={SQL Server}...(rest of connection string)
代替:
DRIVER={SQL Server Native Client 11.0} ...(rest of connection string)
我已经尝试过了,它有效,但我的问题更多的是关于“为什么”。如果DRIVER={SQL SERVER} 是较旧的驱动程序,当我通过 MultiSubnetFailover=Yes/True 等较新功能时,它如何能够连接?
我注意到我已经安装了(windows,来自 odbcad32.exe > Drivers)“ODBC Driver 11 for SQL Server”(MSODBCSQL11.DLL 日期为 2014 年)和“SQL Server”(SQLSRV32.DLL 日期为 2010 年)。
在 Windows 上的 VBA 或 Python 中,传递 {SQL Server} 是否会选择上述两个中较新的一个?使用{SQL Server} 而不是{SQL Server Native Client 11.0} 会丢失任何功能吗?如果是,它们会是什么?有更好的解决方法吗?
【问题讨论】:
-
您是否尝试过使用
DRIVER={ODBC Driver 11 for SQL Server}?您似乎在说它已安装,并且它会比 SQL Server Native Client 11.0(SQLNCLI11.DLL,大约 2012 年)更新。 -
另外,验证
pyodbc.version返回“4.0.3”。最近对 pyodbc 进行了一些可能解决该问题的更改。 -
谢谢,我试过 DRIVER={ODBC Driver 11 for SQL Server},它也可以工作;而且我认为更新是有道理的,因为它会考虑到最新的功能,所以我不应该完全担心有什么区别。仍然很好奇,但我可能应该放手哈哈
标签: sql-server vba odbc pyodbc