我将我们的 ASP 代码切换为使用 SQL Native Client,以便我们可以连接到具有故障转移伙伴的镜像数据库,因为您只能在 SQL Native Client 中提供故障转移伙伴参数。 当我运行一个返回 nvarchar(max) 列且 Driver={SQL Server} 的过程时,一切正常。 当我运行返回小列的过程时 Driver={SQL Server Native Client 10.0} 工作正常。 仅当我尝试运行一个在使用 Driver={SQL Server Native Client 10.0}; 时返回 nvarchar(max) 列的过程时才会出现此问题。我得到了错误。 一旦我们点击就会出现错误
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
错误是: 微软光标引擎(0x800A0001) 数据提供商或其他服务返回 E_FAIL 状态。
在我的例子中,要保存的数据(字符串)大于指定的 nvarcr()。 增加字段大小解决了问题
我找到了。 我不得不使用
connString = "Provider=SQLNCLI10; DataTypeCompatibility=80;...
DataTypeCompatibility 使 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
希望这会有所帮助。
就我而言,将数据显式转换为“nvarchar”解决了问题。数据以阿拉伯语排序规则输入