문제

우리는 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에 의존하고 새로운 GUIND가 필요하다는 것입니다. MSDN과 Google-FU가 실패했습니다. 내가 찾은 모든 결과는이 안내서를 사용합니다.

새로운지도가 있습니까? 더 좋은 방법이 있습니까? ASP.NET (이미 많은 페이지의 운명)에서 기록하는 것보다 번거 로움이 덜 더 나은 방법입니다.

편집 : SQLNCLI10 클라이언트를 사용하는 것이 작동하지 않는지 궁금합니다.

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
도움이 되었습니까?

해결책

변경된 것으로 문서화되지 않은 언어에 중점을 두지 않고 ASP.DLL은 마지막으로 확인한 다음 Windows Server의 다음 버전에서 여전히 지원됩니다.

연결중인 클라이언트를 확인할 수 있습니까? 기존 SQL 2000 ODBC/OLEDB 클라이언트 대신 MSSQL Native Client 10이 설치되어 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top