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.