2009-05-06 4 views
1

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 클라이언트를 사용하면이 작업을 막는 지 궁금해?

+0

올바른 단어는 Google-Fu라고 생각합니다.) –

+0

수정 됨 :-) 어리석은 자동 맞춤법 ​​검사입니다. – Godeke

답변

1

변경된 것으로 문서화되지 않은 언어에 초점을 맞추기보다는 - ASP.dll은 내가 마지막으로 확인한 다음 버전의 Windows 서버에서 계속 지원됩니다.

연결중인 클라이언트가 이전의 sql 2000 odbc/oledb 클라이언트가 아닌 MSSQL Native Client 10이 설치되어 있는지 확인할 수 있습니까?

+0

질문을 사용 된 연결 문자열로 업데이트했습니다. SQLNCLI10 공급자를 사용하고 있습니다.이 공급자는 XML 스트림이 아닌 일반적인 매개 변수가있는 쿼리와 함께 훌륭했습니다. – Godeke

+0

첫 번째로 후회하는 경우 두 가지 사항에 사과드립니다. sqlxml이 설치되었습니다. SQL 2008에서 기본적으로 설치되지 않습니다. http://msdn.microsoft.com/en-us/library/cc645615.aspx 두 번째; 테스트 샘플을 사용해 볼 수 있습니까? cscript에서 제공하는 모든 기능이 제대로 작동하는지 확인하십시오. http://msdn.microsoft.com/en-us/library/ms171785.aspx – u07ch

+0

아니요, 설치되어 있지 않은지 확인하지 않았습니다. 장사 할. 매우 자주 올바른 대답입니다 :) – Godeke

관련 문제