Pergunta

Estamos migrando código ASP que utilizou ADO para se conectar ao SQL Server 2000. Para a maior parte do código migraram sem problemas para SQL Server 2008 depois de definir a conexão, mas um tipo de consulta está jogando um erro que me intriga.

Contra SQL 2000, gostaríamos de usar um 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

O SQL é uma chamada de procedimento armazenado que funciona quando chamado normalmente. Este código continua a trabalhar contra SQL 2000, mas contra SQL 2008, retorna:

ERR_OPENSQLXML XMLDB.openSQLXML falhou. Error '-2147217898': 'dialeto de comando não é suportado por este provedor.'

Meu primeiro palpite é que o SQL Server 2008 depende de MSXML versão 6, e eu preciso de um novo GUID. Meu MSDN e Google-Fu me falhou:. Todos os resultados que eu encontrar usar este GUID

Existe uma nova GUID? Existe uma maneira melhor? É que a melhor maneira menos problemas do que recodificação em ASP.NET (o destino de muitas páginas já).

EDIT: Eu estou querendo saber se usando o cliente SQLNCLI10 é impedindo que esta trabalhando

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

Solução

Ao invés de focalizar a língua que eu não vi documentado como mudou - ASP.dll ainda é suportada na próxima versão do servidor Windows a partir da última verificação que eu fiz.

É possível verificar o cliente que você está conectando a partir de tem o MSSQL Native Client 10 instalado em vez do que o antigo SQL 2000 ODBC / OLEDB clientes.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top