質問

ADOを使用してSQL Server 2000に接続するASPコードを移行しています。接続の定義後、ほとんどの場合、コードは問題なくSQL Server 2008に移行しましたが、ある種のクエリでエラーが発生します。

SQL 2000に対して、次のようなコードを使用します。

set oCommand = Server.CreateObject("ADODB.Command")
oCommand.ActiveConnection = oConn 'already established
oCommand.CommandType = adCmdText 

'This is simplified over the real code, but the wrapper is what we use.
oCommand.CommandText = "<Root xmlns:sql='urn:schemas-microsoft-com:xml-sql'><sql:query>" 
+ Server.HTMLEncode(sql) 
+ "</sql:query></Root>" 

oCommand.Dialect = "{5D531CB2-E6ED-11D2-B252-00C04F681B71}" 'SQL Dialect GUID
oCommand.Properties("Output Stream").Value = oXMLDoc 'Already created
oCommand.Execute , , adExecuteStream 'The point of error

SQLは、正常に呼び出されたときに機能するストアドプロシージャ呼び出しです。このコードは引き続きSQL 2000に対して機能しますが、SQL 2008に対しては以下を返します。

  

ERR_OPENSQLXML XMLDB.openSQLXMLが失敗しました。エラー '-2147217898': 'コマンドダイアレクトはこのプロバイダーではサポートされていません。'

最初の推測では、SQL 2008はMSXMLバージョン6に依存しているため、新しいGUIDが必要です。私のMSDNとGoogle-Fuは失敗しました。私が見つけたすべての結果はこのGUIDを使用しています。

新しいGUIDはありますか?もっと良い方法はありますか? ASP.NETでの再コーディング(多くのページの運命)に比べて、面倒な手間が省けます。

編集:SQLNCLI10クライアントを使用すると、これが機能しなくなるのではないかと思いますか?

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
役に立ちましたか?

解決

変更として文書化されていない言語に焦点を当てるのではなく、ASP.dllは、最後に行ったチェック以降のWindowsサーバーの次のバージョンで引き続きサポートされています。

接続元のクライアントに、古いSQL 2000 odbc / oledbクライアントではなく、MSSQL Native Client 10がインストールされていることを確認できますか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top