Domanda

Stiamo migrando il codice ASP che ha usato ADO per connettersi a SQL Server 2000. Per la maggior parte il codice è migrato senza intoppi a SQL Server 2008 dopo aver definito la connessione, ma un tipo di query genera un errore che mi confonde.

Contro SQL 2000, useremmo il codice in questo modo:

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

L'SQL è una chiamata di procedura memorizzata che funziona quando viene chiamata normalmente. Questo codice continua a funzionare su SQL 2000, ma su SQL 2008 restituisce:

  

ERR_OPENSQLXML XMLDB.openSQLXML non riuscito. Errore "-2147217898": "Il dialetto di comando non è supportato da questo provider."

La mia prima ipotesi è che SQL 2008 si basi su MSXML versione 6 e ho bisogno di una nuova guida. Il mio MSDN e Google-Fu mi hanno fallito: tutti i risultati che trovo usano questo GUID.

Esiste un nuovo GUID? Esiste un modo migliore? È questo il modo migliore meno seccante della ricodifica in ASP.NET (il destino di molte pagine già).

EDIT: mi chiedo se l'utilizzo del client SQLNCLI10 impedisce che funzioni?

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
È stato utile?

Soluzione

Piuttosto che concentrarsi sulla lingua che non ho visto documentato come modificato - ASP.dll è ancora supportato nella prossima versione di Windows Server dall'ultimo controllo che ho fatto.

È possibile verificare se il client da cui ci si sta connettendo ha installato MSSQL Native Client 10 anziché i vecchi client odbc / oledb di sql 2000.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top