为什么我会得到的数据提供程序或其他服务返回E_FAIL状态? SQL本机客户端(Why am I

2019-07-29 05:07发布

我交换我们的ASP代码使用SQL本机客户端,以便我们能够在故障转移合作伙伴连接到镜像数据库,因为你只能在SQL本机客户端提供故障转移伙伴参数。 当我运行一个进程,随着驱动程序= {SQL服务器}返回一个nvarchar(max)列的一切工作正常。 当我运行返回小colums与驱动程序= {SQL Server本机客户端10.0}工作正常特效。 只有当我尝试运行,同时使用驱动程序= {SQL Server本机客户端10.0}返回一个nvarchar(max)列一个PROC; 我得到的错误。 错误,只要我们打发生

rs.Open cmdTemplate

所以我甚至没有提到的列。 设置康恩字符串是这样的:

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状态。

Answer 1:

在我的情况下,要保存的数据(串)比规定nvarchr较大的()。 增加字段大小的问题解决了



Answer 2:

我找到了。 我不得不使用

connString = "Provider=SQLNCLI10; DataTypeCompatibility=80;... 

该DataTypeCompatibility使得nvarchar的最大等映射回格式ADO可以处理。 出于某种原因,该参数不采取与驱动程序= {SQL Server本机客户端10.0}效应;,只有供应商= SQLNCLI10



Answer 3:

使用参考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  

希望这将有助于。



文章来源: Why am I getting Data provider or other service returned an E_FAIL status? SQL Native Client