【发布时间】:2016-07-27 09:23:31
【问题描述】:
我了解 Microsoft 早在 2011 年就决定弃用 OLE DB,并且在 SQL Native Client V11 之后不会发生新的驱动程序或维护。将来您应该使用基于 ODBC 的驱动程序 - http://weblogs.sqlteam.com/dang/archive/2011/09/04/rip-ole-db.aspx
最新的 ODBC 驱动程序是 2016 年 7 月 25 日发布的“Microsoft ODBC Driver 13 for SQL Server” - https://www.microsoft.com/en-us/download/details.aspx?id=50420
来自 Native Client V9、10、11 和 Microsoft ODBC Driver SQL Server V11 和 13 的 ODBC 驱动程序都可以在与 SQL 服务器交互的经典 ASP 代码中工作(我使用的是 SQL 2012),除了一个问题 - nText 和 Nvarchar(max )。
他们只是返回空白 - 我已经看到解决方案说你应该先读入局部变量而不是直接寻址记录集,例如varStr=rs("LargeText"),但这对我不起作用。还有其他提到使用 get chunk 等。
但我很高兴使用 Native Client V9 (Provider=SQLNCLI),它与这些数据类型完美配合。
所以,我的问题是:
有没有办法让 ODBC 驱动程序使用 nText/Nvarchar(max) 数据类型?
在 OLEDB 上使用 ODBC 有什么好处吗?
我是否必须在某个阶段升级到 ODBC 才能在将来连接到 SQL 服务器,即 SQL 2014/2016?
换句话说,我可以继续使用 OLEDB 吗?
好的,Lankymart - 我会使用这样的东西:
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Driver={SQL Server Native Client 11.0};Server=*Yourserver*;Database=*YourDatabase*;User ID=*YourUserid*;Password=*YourPassword*;"
'oConn.Open "Provider=SQLNCLI11;Server=*YourServer*; Database=*YourDatabase*;User ID=*YourUserID*;Password=*YourPassword*;"
set view=oConn.Execute("SELECT [PText] FROM [TextTest]")
ttext=view("PText")
response.write(ttext)
view.Close
set view = Nothing
oConn.Close
set oConn = Nothing
其中 [PText] 是 SQL 中的 NVARCHAR(Max) 字段。这不适用于使用本机客户端 ODBC ({SQL Server Native Client 11.0}),但可以使用 OLE DB (SQLNCLI11)。
【问题讨论】:
-
即使使用 SQL 2014/2016 或未来的 SQL 版本?
-
如果通过 ODBC 的 Native Client 不适合您,您可能正在使用 wrong connection string。
-
我认为 Native Client 版本以包含 OLE DB 和 ODBC 版本的 SQL Native Client 11(SQL 2012 版本)结束,可用的最新驱动程序是“Microsoft ODBC Driver 13 for SQL Server”,它是仅限 ODBC。
-
你试过使用
Microsoft ODBC Driver 13 for SQL Server吗?我可以确认我也无法使用{SQL Server Native Client 11.0}访问nvarchar(max)。 Sounds like it maybe a known issue,现在最好继续使用SQLNCLI11。
标签: vbscript asp-classic