Warum erhalte ich einen E_FAIL-Status von einem Datenanbieter oder einem anderen Dienst? SQL Native Client

Ich ändere unseren ASP-Code auf die Verwendung von SQL Native Client, damit wir mit einem Failover-Partner eine Verbindung zu einer gespiegelten Datenbank herstellen können, da Sie die Failover-Partnerparameter nur in SQL Native Client bereitstellen können. Wenn ich eine Prozedur ausführe, die eine nvarchar (max) -Spalte mit Driver = {SQL Server} zurückgibt, funktioniert alles einwandfrei. Wenn ich procs ausführe, die kleine Spalten mit Driver = {SQL Server Native Client 10.0} zurückgeben, funktioniert das einwandfrei. Es ist nur, wenn ich versuche, eine Prozedur auszuführen, die eine nvarchar (max) -Spalte zurückgibt, während Driver = {SQL Server Native Client 10.0} verwendet wird. dass ich den fehler bekomme. Der Fehler tritt auf, sobald wir treffen

<code>rs.Open cmdTemplate
</code>

Ich beziehe mich also nicht einmal auf die Kolumne. Setzen Sie den Verbindungsstring wie folgt:

<code>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 & ";"
</code>

Und so öffnen:

<code>set rs = server.CreateObject("ADODB.RecordSet")
rs.CursorLocation = 3
rs.CursorType = 3
rs.CacheSize = 50

on error resume next
    rs.Open cmdTemplate
</code>

Der Fehler lautet: Microsoft Cursor Engine (0x800A0001) Datenprovider oder anderer Dienst haben den Status E_FAIL zurückgegeben.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage