أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

لا يمكن بشكل صحيح ترجمة بيانات الأحرف من عميل إلى خادم باستخدام برنامج تشغيل SQL Server ODBC إذا صفحة رموز العميل عن صفحة الرموز الملقم

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية234748
الأعراض
عند استخدام MDAC 2.1 أو إصدار أحدث من برنامج تشغيل ODBC ملقم SQL (إصدار 3.70.0623 أو الإصدار الأحدث) أو موفر OLEDB (الإصدار 7.01.0623 أو أحدث) ، بعض الحالات قد تواجه ترجمة بيانات الأحرف من صفحة رموز العميل إلى الملقم رمز الصفحة، حتى عندما يتم تعطيل Autotranslation الاتصال.
السبب
لم يتم Autotranslation آلية الوحيدة التي يمكن أن يؤدي إلى تحويل صفحة الرموز. برنامج تشغيل SQL Server 7.0 ODBC وموفر OLEDB تقديم سلوك جديد عند الاتصال والإصدارات اللاحقة من إما أو SQL Server 7.0 أو MSDE 1.0. يتم تحويل كافة عبارات SQL التي يتم إرسالها إلى حدث لغة إلى Unicode على العميل قبل يتم إرسالها إلى الملقم. يشبه تأثير النهائي هذا Autotranslation كافة البيانات تدفق من العميل إلى الخادم من خلال حدثاً لغة بغض النظر عن الإعداد Autotranslation الحالي من أجل الاتصال. هذا سوف لا يقدم أية صعوبات فيما عدا عند محاولة تخزين بيانات غير ترجمة الأحرف من صفحة التعليمات برمجية غير صفحة رموز SQL Server.
الحل البديل
لا تقم بتخزين بيانات X صفحة التعليمات البرمجية في صفحة الترميز اللغوي ص SQL Server (على سبيل المثال، 950 بيانات مخطط شيفرة في ملقم 1252 صفحة التعليمات برمجية). أثناء هذا غير ممكنة في بعض الحالات مع الإصدارات السابقة من SQL دوماً مر غير معتمد. إلى ملقم SQL 1252 anything ولكن 1252 الحرف غير البيانات حرفاً صحيحاً. سوف لا يمكن فرز بيانات الأحرف بدون Unicode من مخطط شفرة مختلفة من بشكل صحيح ثم في الحالة الخاصة مزدوجة البايت (DBCS) بيانات SQL Server لن تتعرف على حدود الأحرف بشكل صحيح. يمكن أن يسبب هذا مشاكل الهامة مثل المشكلة الموضحة في المقالة التالية في "قاعدة المعارف لـ Microsoft:
155723INF: اقتطاع SQL Server من سلسلة أحرف DBCS
أفضل خيار لصفحة رمز SQL Server هو الشفرة عملاء سوف يكون الوصول إلى الملقم.

قد يكون الملقم والعميل صفحات الرموز مختلفة ولكن يجب التأكد من تمكين Autotranslation على العميل وبذلك يمكنك الحصول على ترجمة البيانات من صفحة الرموز الموجودة على الملقم المناسب في كافة الحالات.

إذا كان يجب أن الملقم الخاص بك من مخزن البيانات من عدة صفحات التعليمات البرمجية الحل المعتمدة إلى تخزين البيانات في الأعمدة Unicode (NVARCHAR/NCHAR/NTEXT).

إذا تطلب بما يتناسب مع الموقف الذي تواجهه تخزين بيانات مخطط شيفرة X في صفحة الترميز اللغوي ص SQL Server ، يوجد طريقتان فقط القيام بذلك بشكل يعتمد عليه:
  • تخزين البيانات في الأعمدة الأعمدة الثنائية (ثنائي/VARBINARY/IMAGE).
  • كتابة التطبيق الخاص بك لاستخدام "استدعاءات الإجراء البعيدة" (RPCs) للحصول على كافة عبارات SQL التي تتعامل مع بيانات الأحرف. البيانات المرسلة من خلال حدث RPC غير عرضة هذا التحويل. لاحظ أنه لا يوجد شيء في برنامج التشغيل أو مستوى DSN التي يمكنك القيام لتغيير نوع الأحداث التي يتم إرسالها. يعتمد ما إذا كان يتم إرسال أمر اللغة أو الحدث RPC على APIs وبناء المختار من قبل للمبرمج عند كتابة التطبيق.
معلومات أخرى
Autotranslation خانات (أي، “ "إجراء ترجمة" للبيانات الحرف"الاختيار في تطبيقات ODBC أحدث) تحويل بيانات الأحرف من صفحة رموز العميل إلى الملقم شفرة قبل إرسال البيانات إلى الخادم باستخدام Unicode كـ وسيطة ترجمة. ومع ذلك، يحول برنامج تشغيل SQL Server ODBC 3.7 أيضاً كافة عبارات SQL التي يتم إرسالها كحدث لغة إلى Unicode قبل وضع على السلك له تأثير يشبه Autotranslation ولكن لا يتم التحكم بواسطة إعداد Autotranslation. وفي المقابل، رموز الأحرف تصل البيانات تدفق من الملقم إلى احترام عملاء إشارة Autotranslation; إذا تم إيقاف Autotranslation البيانات إلى تطبيق العميل مع نفس الحرف بيانات تحتوي على الملقم. وبشكل مماثل، يمكن تعطيل ترجمة بيانات ملقم عميل RPC أحداث إيقاف Autotranslation. يتبع نصي بسيط يوضح كيف يؤثر هذا السلوك على الأحداث اللغة. تم تشغيل هذا المثال من "استعلام محلل" عميل صفحة 1252 رمز الاتصال بملقم صفحة 437 التعليمات برمجية:
-- Turn Autotranslation off here.    USE tempdb    GO    CREATE TABLE t1 (c1 int, c2 char(1))    GO        -- Enter a yen character, using the keystroke ALT-0165.    INSERT INTO t1 VALUES (1, '¥')     SELECT c1, c2, ASCII (c2) FROM t1
c1          c2                       ----------- ---- -----------         1               157                (1 row(s) affected)
لاحظ التالي حول المثال السابق:
  • على الرغم من أن Autotranslation تم إيقاف تشغيله أثناء هذه الدفعة تم تحويل رمز الحرف 165 (ين في مخطط الشفرة 1252) إلى 157 (ين في مخطط الشفرة 437). وهذا لأن برنامج تشغيل ODBC تحويل سلسلة SQL إلى Unicode قبل إرسالها الملقم ولذلك تم الملقم قادراً على تحويل إلى الأحرف المناسبة للتخزين في مخطط الشفرة 437.
  • عند تشغيل العميل على SELECT لاسترداد البيانات التي تحتوي فقط تم تخزينها ، الحرف 157 وصلت غير ترجمة العميل (157 العروض لأعلى خانة "" على عميل صفحة 1252 التعليمات برمجية). ويرجع ذلك إلى أن التحويل تمت مناقشتها في هذه المقالة ينطبق فقط على البيانات المرسلة من العميل إلى الملقم, وليس من الملقم إلى العميل. لم تم ترجمة البيانات لأن الإعداد Autotranslation إيقاف.

-- Turn Autotranslation back on before running the following batch.    INSERT INTO t1 VALUES (2, '¥')    SELECT c1, c2, ASCII (c2) FROM t1
c1          c2                       ----------- ---- -----------         1           ¥    157        2           ¥    157                (2 row(s) affected)
في هذه الحالة تشغيل Autotranslation مرة أخرى له أي تأثير على الترجمة من العميل إلى الملقم (أي، حدث نفس الصحيح الترجمة من رمز الحرف 165 إلى رمز الحرف 157) ، ولكن لديه تأثير على البيانات التي تم استردادها من الملقم. لاحظ أن عند تشغيل العبارة SELECT هذا الوقت (مع Autotranslation على) ، رموز ين تعرض بشكل صحيح في تطبيق 1252 صفحة التعليمات البرمجية بسبب أن يكون لديك تم ترجمة من رمز الحرف 157 إلى رمز الحرف 165 بواسطة آلية Autotranslation.

ستشاهد هذا السلوك (تحويل الأحداث اللغة إلى Unicode على العميل) عند استخدام ODBC ملقم SQL أي إصدار برنامج التشغيل 3.70 أو أحدث و اتصال SQL Server 7.0 أو الإصدار الأحدث. لن يحدث ذلك عند استخدام برامج تشغيل ODBC الأقدم أو عند استخدام برنامج تشغيل 3.7 للاتصال إلى SQL Server 6.5 أو إصدار سابق. بالإضافة إلى ذلك، إذا تم تخزين البيانات في الأعمدة Unicode (NCHAR/NVARCHAR/NTEXT) التحويل لن مشكلة.
لمزيد من المعلومات حول كيفية تمثيل بيانات الأحرف في SQL Server 2005، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف لـ Microsoft:
904803يتم تمثيل بيانات الأحرف بشكل غير صحيح عند شفرة الكمبيوتر العميل الذي يختلف عن شفرة قاعدة بيانات في SQL Server 2005
تعيين dbcs cs cp أحرف مجموعة الأحرف nls OemToAnsi AutoAnsiToOem SQLExecDirect SQLExecute

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 234748 - آخر مراجعة: 02/22/2007 22:33:50 - المراجعة: 4.3

Microsoft SQL Server 7.0 Standard Edition, Microsoft Open Database Connectivity 3.7, Microsoft Data Engine 1.0, Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbprb KB234748 KbMtar
تعليقات
ml>t=">ipt" async=""> var varAutoFirePV = 1; var varClickTracking = 1; var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write(" =4050&did=1&t=">random() * 3)).toString(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m); language in languagesListForLargeScreens track by $index -->
Venezuela - Español
/c1.microsoft.com/c.gif?DI=4050&did=1&t=">d=1&t="> var varCustomerTracking = 1; var Route = "76500"; var Ctrl = ""; document.write("