Pregunta

Estamos migrando el código ASP que utilizó ADO para conectarse a SQL Server 2000. En su mayor parte, el código migró sin problemas a SQL Server 2008 después de definir la conexión, pero un tipo de consulta arroja un error que me desconcierta.

Contra SQL 2000, usaríamos código como este:

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

El SQL es una llamada a procedimiento almacenado que funciona cuando se llama normalmente. Este código continúa funcionando en SQL 2000, pero en SQL 2008 devuelve:

  

ERR_OPENSQLXML XMLDB.openSQLXML falló. Error '-2147217898': 'Este proveedor no admite el dialecto de comandos'.

Mi primera suposición es que SQL 2008 se basa en MSXML versión 6, y necesito una nueva guía. Mi MSDN y Google-Fu me han fallado: todos los resultados que encuentro utilizan este GUID.

¿Hay un nuevo GUID? ¿Hay una mejor manera? ¿Es esa la mejor manera de tener menos problemas que recodificar en ASP.NET (el destino de muchas páginas ya).

EDITAR: ¿Me pregunto si usar el cliente SQLNCLI10 impide que esto funcione?

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
¿Fue útil?

Solución

En lugar de centrarme en el lenguaje que no he visto documentado como modificado, ASP.dll todavía es compatible con la próxima versión del servidor de Windows desde la última comprobación que hice.

¿Puede verificar si el cliente desde el que se está conectando tiene instalado MSSQL Native Client 10 en lugar de los antiguos clientes sql 2000 odbc / oledb?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top