ADO를 사용하여 SQL Server 2000에 연결하는 ASP 코드를 마이그레이션합니다. 대부분의 경우 코드는 연결을 정의한 후 SQL Server 2008로 장애없이 마이그레이션되지만 쿼리가 나를 괴롭히는 오류를 던지고 있습니다.ADO에서 SQL Server 2008에 대한 XML 스트림 액세스
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을 사용하며 새 GUID가 필요합니다. 내 MSDN과 Google-Fu가 실패했습니다. 찾은 모든 결과는이 GUID를 사용합니다.
새 GUID가 있습니까? 더 좋은 방법이 있습니까? 더 나은 방법은 ASP.NET에서 많은 페이지의 운명을 이미 recoding보다 덜 번거 로움입니다.
편집 : SQLNCLI10 클라이언트를 사용하면이 작업을 막는 지 궁금해?
올바른 단어는 Google-Fu라고 생각합니다.) –
수정 됨 :-) 어리석은 자동 맞춤법 검사입니다. – Godeke