3

フェールオーバー パートナーのパラメーターは SQL Native Client でのみ指定できるため、フェールオーバー パートナーを使用してミラーリングされたデータベースに接続できるように、ASP コードを SQL Native Client を使用するように切り替えています。Driver={SQL Server} で nvarchar(max) 列を返す proc を実行すると、すべて正常に動作します。Driver={SQL Server Native Client 10.0} で小さな列を返す proc を実行すると、正常に動作します。Driver={SQL Server Native Client 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 Cursor Engine (0x800A0001) データ プロバイダーまたは他のサービスが E_FAIL ステータスを返しました。

4

3 に答える 3

2

私の場合、保存するデータ (文字列) は、指定された nvarchr() よりも大きくなりました。フィールドサイズを大きくすると問題が解決しました

于 2013-01-11T23:37:44.230 に答える
1

見つけた。私は使用しなければならなかった

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

DataTypeCompatibility は、nvarchar max などを ado が処理できる形式にマップし直します。そして、何らかの理由でそのパラメーターは Driver={SQL Server Native Client 10.0}; では有効にならず、Provider=SQLNCLI10 でのみ有効です。

于 2012-05-02T16:19:58.573 に答える