我正在切换我们的ASP代码以使用SQL Native Client,以便我们可以连接到具有故障转移伙伴的镜像数据库,因为您只能在SQL Native Client中提供故障转移伙伴参数。 当我运行一个返回带有 Driver={SQL Server} 的 nvarchar(max) 列的 proc 时,一切正常。 当我运行使用 Driver={SQL Server 本机客户端 10.0} 返回小列的 procs 时,工作正常。 只有当我尝试在使用 Driver={SQL Server 本机客户端 10.0} 时运行返回 nvarchar(max) 列的 proc 时;我收到错误。 一旦我们点击,错误就会发生
rs.Open cmdTemplate
所以我什至不是指专栏。 像这样设置 conn 字符串:
if bUseSQLNative then
connString = "Driver={SQL Server Native Client 10.0}; Network=DBMSSOCN; server=" & rs("SERVER_NAME") & "," & rs("PORT_NUM") & ";database=" & rs("DATABASE_NAME")
connString = connString & ";uid=" & rs("USER_NAME") & ";pwd=" & UnProtectValueEx(ConnSaltForDBPwd(), rs("CONNECTION_NAME"), rs("PASSWORD"))
else
connString = "Driver={SQL Server}; Network=DBMSSOCN; server=" & rs("SERVER_NAME") & "," & rs("PORT_NUM") & ";database=" & rs("DATABASE_NAME")
connString = connString & ";uid=" & rs("USER_NAME") & ";password=" & UnProtectValueEx(ConnSaltForDBPwd(), rs("CONNECTION_NAME"), rs("PASSWORD"))
end if
connString = connString & ";"
并像这样打开:
set rs = server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = 3
rs.CursorType = 3
rs.CacheSize = 50
on error resume next
rs.Open cmdTemplate
错误是:Microsoft 光标引擎 (0x800A0001)数据提供程序或其他服务返回E_FAIL状态。
在我的例子中,要保存的数据(字符串)大于指定的 nvarchr()。增加字段大小解决了这个问题<</p>
我找到了。 我不得不使用
connString = "Provider=SQLNCLI10; DataTypeCompatibility=80;...
数据类型兼容性使 nvarchar max 等映射回 ado 可以处理的格式。 由于某种原因,该参数在 Driver={SQL Server Native Client 10.0}; 中不起作用,仅在 Provider=SQLNCLI10
使用引用 MSADO 6.1 库,然后构造数据环境以连接到数据库并建立要像这样使用的记录集:
mydata = is a data environment with the connection to the database
getItemRec = is the query or command inside the mydata
myRecSet = is a Recordset Variable.
像这样执行代码:
myData.Commands("getItemRec").CommandText = "Select * from myTable"
myData.getItemRec
Set myRecSet = myData.rsgetItemRec
With myRecSet
If .RecordCount <> 0 Then .MoveNext
Do While .EOF = False
....
....
.movenext
Loop
end With
希望这会有所帮助。