0

先月から問題が発生しており、何が問題なのかわかりません。ここにセットアップと少しの背景があります。

バックグラウンド:

Windows Server 2003 および SQL Server 2000 で Web サイトを実行していた Web ホストがあります。Web ページの 1 つで、SQL サーバーのストアド プロシージャからの結果セットが xml として返されました。以下はコードです:

ストアド プロシージャ:

select top 10
    1 as tag
    , null as parent
    , column1 as [item!1!column1!element]
    , column2 as [item!1!column2!element]
from
    table1

for XML EXPLICIT

ASP ページ: index.asp

Call OpenConn

Set cmd = Server.CreateObject("ADODB.Command")
With cmd
 .ActiveConnection = dbc
 .CommandText = "name of proc"
 .CommandType = adCmdStoredProc

 .Parameters.Append .CreateParameter("@RetVal", adInteger, adParamReturnValue, 4)
 .Parameters.Append .CreateParameter("@Level", adInteger, adParamInput, 4, Level)
End With

Set rsItems = Server.CreateObject("ADODB.Recordset")
With rsItems
 .CursorLocation = adUseClient
 .CursorType = adOpenStatic
 .LockType = adLockBatchOptimistic
 Set .Source = cmd
 .Open
 Set .ActiveConnection = Nothing
End With

If NOT rsItems.BOF AND NOT rsItems.EOF Then

 OutputXMLQueryResults rsItems,"items"

End If

Set rsItems = Nothing
Set cmd = Nothing

Call CloseConn



Sub OpenConn()
 strConn = "Provider=SQLOLEDB;Data Source=[hidden];User Id=[hidden];Password=[hidden];Initial Catalog=[hidden];"
 Set dbc = Server.CreateObject("ADODB.Connection")
 dbc.open strConn
End Sub

Sub CloseConn()
 If IsObject(dbc) Then
  If dbc.State = adStateOpen Then
   dbc.Close
  End If
  Set dbc = Nothing
 End If
End Sub

Sub OutputXMLQueryResults(RS,RootElementName)
 Response.Clear
 Response.ContentType = "text/xml"
 Response.Codepage = 65001
 Response.Charset = "utf-8"
 Response.Write ""
 Response.Write ""
 While Not RS.EOF
  Response.Write RS(0).Value
  RS.MoveNext
 WEnd
 Response.Write ""
 Response.End
End Sub

現在:

ホストが Windows Server 2008 と SQL Server 2008 にアップグレードされるまで、すべてがうまく機能していました。突然、次のような結果が得られました。

ブラウザから:

漢字: ブラウザ http://iphone.rolyrolls.com/chineseChars1.png

ビューソースから:

漢字: ソースを表示 http://iphone.rolyrolls.com/chineseChars2.png

strConn = "DSN=[my DSN Name];User Id=[hidden];Password=[hidden];Initial Catalog=[hidden];"しかし、DSN 接続を使用すると、完全に正常に動作することがわかりました。

私の現在のホストは DSN をサポートしなくなりますが、それはこの問題の範囲外です。Recordset オブジェクトの代わりにオブジェクトを使用するように誰かに言われましたADO.Streamが、それを実装する方法がわかりません。

質問:

誰かがこれに遭遇し、それを修正する方法を見つけましたか?

そのオブジェクトはどうですかADO.Stream、誰かが私のコードに合うサンプルを手伝ってくれますか?

4

1 に答える 1

0

connectionstrings.comをチェックしてみてください。


編集

データベース ドライバーの問題のように思えます。どのドライバーが DSN 接続を使用していますか?

アップデート

connectionstrings.com には SQL ネイティブ接続が一覧表示されていますProvider=SQLNCLI10が、このプロバイダーの .udl 接続ファイルを生成するとProvider=SQLNCLI10.1、これは試してみる価値があると表示されます (まだ試していない場合)。

于 2010-04-21T20:04:47.867 に答える