2012-05-01 70 views
1

SQLネイティブクライアントでフェールオーバーパートナーパラメータのみを提供できるため、SQL Native Clientを使用するようにASPコードを切り替えるので、フェールオーバーパートナーと共にミラーリングされたデータベースに接続できます。 Driver = {SQL Server}のnvarchar(max)列を返すprocを実行すると、すべて正常に動作します。 Driver = {SQL Server Native Client 10.0}で小文字を返すprocsを実行すると問題なく動作します。 Driver = {SQL Server Native Client 10.0}を使用しているときにnvarchar(max)列を返すprocを実行しようとするときだけです。私はエラーを取得します。私たちは、だから私は偶数列に言及していないよデータプロバイダまたは他のサービスがE_FAILステータスを返したのはなぜですか? SQLネイティブクライアント

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カーソルエンジン(0x800A0001) データプロバイダまたは他のサービスがE_FAILステータスを返しました。

+0

http://social.msdn.microsoft.com/forums/en-US/sqldataaccess/thread/ac06f814-1814-4861-b2cd-8d5e507a7ee3/ - 関連性がありますか?しかし、それは入力パラメータでした。これは、nvarchar(max)の列を選択するだけです。 –

+0

これは間違いなく関連しています。ストアドプロシージャにキャスト(SEND_TEXTをntextとして)[SEND_TEXT]を追加すると、エラーなく動作します。だから、それは何かADOのデータ型で、ntextとnvarchar(max)が違って見えますか? –

+0

この問題を報告している他の人も見つかりました。これはASP classicにとってユニークではありません。 Visual Foxproにも影響を及ぼすプロバイダーまたはドライバーの制限のいずれかが表示されます。 http://www.bsslimited.com/articles/classic-asp-and-sql-server-2008/およびhttp://connect.microsoft.com/SQLServer/feedback/details/467300/problem-with-varchar-max -via-sql-native-client – HK1

答えて

1

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

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

DataTypeCompatibilityは、nvarchar maxなどのマップをADOの処理形式に戻します。何らかの理由で、パラメータがDriver = {SQL Serverネイティブクライアント10.0}で有効にならない; Provider = SQLNCLI10でのみ

2

私の場合、保存するデータ(文字列)は指定したnvarchr ()。

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. 

のようなコードを実行します。 増やすフィールドサイズが

0

を参照MSADO 6.1ライブラリを使用して、データベースに接続し、このように使用するレコードセットを確立するために、データ環境を構築する問題を解決しましたこれは:

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 

希望します。

関連する問題