تصحيح: قد تتلقى رسالة إعلام بخطأ عند تحميل برنامج تشغيل SQL Server 2000 JDBC وبرنامج تشغيل SQL Server 2005 ل JDBC في نفس التطبيق ومحاولة للاتصال بقاعدة بيانات SQL Server 2005 ثم تشغيل استعلام

الخطأ #: 2059 (بسويبداتا)
الخطأ رقم: 53081 (تعديل المحتوى)الخطأ #: 2059 (بسويبداتا)

الأعراض

اطلع على السيناريو التالي. تحميل Microsoft SQL Server 2000 Driver ل JDBC في تطبيق. وبعد ذلك، يمكنك تحميل Microsoft SQL الخادم 2005 جدبك برنامج التشغيل في نفس التطبيق. في هذا السيناريو، عند محاولة الاتصال بقاعدة بيانات SQL Server 2005 باستخدام SQL Server 2005 جدبك برنامج تشغيل URL، يتم تأسيس الاتصال باستخدام Microsoft SQL Server 2000 Driver ل JDBC. إذا قمت فيما بعد بتشغيل استعلام، تتلقى رسالة الخطأ التالية:
[Microsoft] [SQLServer 2000 برنامج تشغيل JDBC] [SQLServer] دفق البيانات الواردة جدولي (TDS) استدعاء إجراء بعيد (RPC) بروتوكول دفق غير صحيح. المعلمة 1 (""): نوع بيانات 0x38 غير معروف.
إذا قمت بتأسيس اتصال بقاعدة بيانات SQL Server 2000، قد لا تتلقى أي رسالة الإعلام بالخطأ، وقد يكون استخدام برنامج التشغيل الخاطئ دون أن يلاحظها أحد. تواجه هذه المشكلة عند تحميل SQL Server 2000 Driver ل JDBC قبل أن يتم تحميل Microsoft SQL Server 2005 JDBC برنامج التشغيل في التطبيق.

السبب

تحدث هذه المشكلة بسبب حدوث تحليل الاسم خلل في برنامج التشغيل SQL Server 2000 JDBC. برنامج تشغيل SQL Server 2000 JDBC يقبل عناوين الاتصال من SQL Server 2005 جدبك سائق. سلسلة اتصال ملقم SQL 2005 برنامج تشغيل JDBC ابدأ محددات مواقع المعلومات باستخدام السلسلة التالية:
jdbc:sqlserver://ConnectionString
يجب قبول SQL Server 2000 Driver ل JDBC URLs سلسلة الاتصال التي تبدأ بالنص التالي:
jdbc:microsoft:sqlserver://ConnectionString
ومع ذلك، يقبل SQL Server 2000 Driver ل JDBC أيضا الاتصالات التي لها التنسيق التالي:
jdbc:sqlserver://ConnectionString
يحدث الاستثناء لأن SQL Server 2000 Driver ل JDBC غير مصمم للاتصال بقاعدة بيانات SQL Server 2005.

الحل

يتوفر الآن إصلاح عاجل معتمد من Microsoft، ولكن الغرض منه هو حل المشكلة الموضحة في هذه المقالة فقط. فقط تطبيقه على الأنظمة التي تواجه هذه المشكلة بالتحديد. قد يتم إجراء اختبارات إضافية على هذا الإصلاح العاجل. ولذلك، إذا لم يكن تأثير المشكلة كبيرا، نوصي بالانتظار حتى التالي SQL Server 2000 Driver ل JDBC حزمة الخدمات الذي يحتوي على هذا الإصلاح العاجل.

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

معلومات الملف

يحتوي إصدار اللغة الإنجليزية من هذا الإصلاح العاجل على سمات الملف (أو سمات الملف الأحدث) المسرودة في الجدول التالي. يتم سرد التواريخ والأوقات الخاصة بهذه الملفات بالتوقيت العالمي المتفق عليه (UTC). عند عرض معلومات الملف، يتم تحويلها إلى التوقيت المحلي. لمعرفة الفرق بين التوقيت العالمي المتفق عليه والتوقيت المحلي، استخدم علامة التبويب المنطقة الزمنية في عنصر التاريخ والوقت في "لوحة التحكم".
اسم الملفحجم الملفالتاريخالوقت
Msbase.jar289,71303-Feb-200623:02
Mssqlserver.jar67,48303-Feb-200623:02
Msutil.jar56,53703-Feb-200623:02

الحل البديل

للتغلب على هذه المشكلة، اتبع الخطوات التالية:
  1. تحميل برنامج تشغيل SQL Server 2005 ل JDBC قبل أن تقوم بتحميل برنامج تشغيل SQL Server 2000 ل JDBC. للقيام بذلك، استخدم الفئة دريفيرماناجير كما هو موضح في مثال التعليمات البرمجية التالي.
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); // 2005 versionClass.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); // 2000 version

  2. استخدام برنامج تشغيل SQL الخادم 2005 ل URL اتصال جدبك لتأسيس اتصال. للقيام بذلك، استخدم تعليمة برمجية مشابهة لمثال التعليمات البرمجية التالي.
    Connection con = DriverManager.getConnection("jdbc:sqlserver://<ServerName>;user=<UserName>;password=<Password>");
لمزيد من المعلومات حول كيفية الاتصال بمصادر البيانات وكيفية استخدام محدد موقع معلومات اتصال، قم بزيارة مواقع ويب شبكة مطوري Microsoft (MSDN) التالية:
إنشاء محدد موقع معلومات الاتصال
http://msdn2.microsoft.com/en-us/library/ms378428.aspx

تعيين خصائص الاتصال
http://msdn2.microsoft.com/en-us/library/ms378988.aspx

الحالة

أقرت Microsoft أن هذا هو الشوائب في منتجات Microsoft المسردة في قسم "تنطبق على".

مزيد من المعلومات

خطوات إعادة إنشاء المشكلة

ترجمة وتشغيل نموذج التعليمات البرمجية التالي Java.
import java.sql.*;public class TestDriver {
public static void main(String[] args) throws Exception
{

Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Connection conn = DriverManager.getConnection("jdbc:microsoft:sqlserver://<Server>;DatabaseName=
<DatabaseName>", "<UserId>","<Passwd>");
DatabaseMetaData dbmd = conn.getMetaData();
System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());

conn = DriverManager.getConnection("jdbc:sqlserver://<Server>;DatabaseName=<DatabaseName>",
"<UserId>","<Passwd>");
dbmd = conn.getMetaData();
System.out.println("Driver = " + dbmd.getDriverName() + "_" + dbmd.getDriverVersion());
displayVersions(conn);
}

public static void displayVersions(Connection conn)
{
Statement s3 = null;
ResultSet rr = null;

try
{
s3 = conn.createStatement();
System.out.println("\nStart trying to retreive data\n");
rr = s3.executeQuery("select @@version");

boolean OK = rr.next();
if (OK)
System.out.println("The current version of Microsoft SQL Server is: " + rr.getString(1));
else
System.out.println("result set NO ROWS!");
}
catch (Exception ex)
{
System.out.println("Caught error in displayAnyData:\n\t" + ex.getMessage());
}

try
{
if (rr != null) rr.close();
if (s3 != null) s3.close();
System.out.println("End trying to retreive data\n");
}
catch (Exception ee)
{
System.out.println("Error closing rr or s3 in displayData: " + ee.getMessage());
}

}

}
ملاحظة: لاستخدام نموذج التعليمات البرمجية هذه، استبدل العناصر النائبة التالية:
  • استبدل < ملقم > اسم مثيل SQL Server.
  • استبدل < قاعدة > اسم قاعدة البيانات.
  • استبدل < اسم المستخدم > معرف المستخدم الخاص بك.
  • استبدل < أسود > كلمة المرور الخاصة بك.

المراجع

لمزيد من المعلومات حول JDBC، انقر فوق رقم المقالة التالي لعرضها في "قاعدة المعارف ل Microsoft":

كيفية الشروع في العمل مع Microsoft JDBC 313100

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

خصائص

رقم الموضوع: 915834 - آخر مراجعة: 15‏/01‏/2017 - المراجعة: 1

تعليقات