Question

Nous migrons du code ASP utilisant ADO pour se connecter à SQL Server 2000. Après avoir défini la connexion, le code a migré sans accroc vers SQL Server 2008, mais un type de requête génère une erreur qui me laisse perplexe.

Contre SQL 2000, nous utiliserions un code comme celui-ci:

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

Le SQL est un appel de procédure stockée qui fonctionne lorsqu'il est appelé normalement. Ce code continue de fonctionner avec SQL 2000, mais avec SQL 2008, il renvoie:

  

ERR_OPENSQLXML XMLDB.openSQLXML a échoué. Erreur '-2147217898': 'Le dialecte de commande n'est pas pris en charge par ce fournisseur.'

Ma première hypothèse est que SQL 2008 repose sur MSXML version 6 et que j'ai besoin d'un nouveau GUID. Mes MSDN et Google-Fu m'ont échoué: tous les résultats obtenus utilisent ce GUID.

Y a-t-il un nouveau GUID? Y a-t-il un meilleur moyen? Est-ce mieux de créer moins de problèmes que de recoder dans ASP.NET (le destin de nombreuses pages déjà).

EDIT: Je me demande si l’utilisation du client SQLNCLI10 empêche cela de fonctionner?

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
Était-ce utile?

La solution

Plutôt que de vous concentrer sur la langue que je n'ai pas vue documentée comme modifiée - ASP.dll est toujours pris en charge dans la prochaine version du serveur Windows à partir de la dernière vérification effectuée.

Pouvez-vous vérifier que le client à partir duquel vous vous connectez a MSSQL Native Client 10 installé plutôt que les anciens clients odbc / oledb de SQL 2000?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top