سؤال

ونحن المهاجرة كود ASP التي تستخدم ADO للاتصال SQL Server 2000. للحصول على الجزء الأكبر هاجر رمز دون وجود عوائق إلى 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، وأنا بحاجة إلى ارشد الجديد. بلدي MSDN وجوجل فو فشل لي: كل النتائج أجد استخدام هذا GUID

هل هناك GUID الجديد؟ هل هناك طريقة أفضل؟ هو أن أفضل طريقة مشاحنات أقل من إعادة ترميز في ASP.NET (مصير العديد من الصفحات بالفعل).

وتحرير: أنا أتساءل عما اذا كان باستخدام عميل SQLNCLI10 هو منع هذا من العمل

configConnString = 
"Provider=SQLNCLI10;DataTypeCompatibility=80;Server=XYZZY;Database=ucpm;MARS Connection=True;Trusted_Connection=Yes;"
هل كانت مفيدة؟

المحلول

وبدلا من التركيز على اللغة التي أنا لم أر موثقة كما تغير - ASP.dll لا تزال معتمدة في النسخة القادمة من ويندوز سيرفر من الاختيار الأخير الذي أدليت به.

ويمكنك التحقق من العميل الذي تتصل منه والعميل MSSQL الأصلية 10 تثبيت بدلا من SQL العملاء 2000 دبك / OLEDB القديم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top