استكشاف أخطاء اتصالات قاعدة البيانات وحلها

تاريخ آخر تحديث 20 ديسمبر 2021

استكشاف مشاكل الأذونات وإصلاحها، ورسائل خطأ Microsoft ورسائل خطأ MySQL في Dreamweaver.

تم تبسيط واجهة المستخدم في Dreamweaver والإصدارات الأحدث. ونتيجة لذلك، قد لا تجد بعض الخيارات الموضحة في هذه المقالة في Dreamweaver والإصدارات اللاحقة. للاطلاع على المزيد من المعلومات، راجع هذه المقالة.

استكشاف مشاكل الأذونات وإصلاحها

واحدة من أكثر المشاكل شيوعًا هي عدم كفاية أذونات المجلد أو الملف. إذا كانت قاعدة بياناتك موجودة على جهاز كمبيوتر يعمل بنظام Windows 2000 أو Windows XP وتلقيت رسالة خطأ عند محاولة عرض صفحة ديناميكية في متصفح الويب أو في Live view، فقد يكون الخطأ بسبب مشكلة في الأذونات.

حساب Windows الذي يحاول الوصول إلى قاعدة البيانات لا يملك أذونات كافية. قد يكون الحساب إما حساب Windows المجهول (افتراضياً، IUSR_computername) أو حساب مستخدم محدد، إذا تم تأمين الصفحة للوصول المصادق عليه.

يجب عليك تغيير الأذونات لمنح حساب IUSR_computername الأذونات الصحيحة حتى يتمكن خادم الويب من الوصول إلى ملف قاعدة البيانات. بالإضافة إلى ذلك، يجب أن يكون للمجلد الذي يحتوي على ملف قاعدة البيانات أيضاً أذونات معينة مضبوطة للكتابة في تلك قاعدة البيانات.

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

بالإضافة إلى ذلك، إذا كان يتم الإشارة إلى مسار قاعدة البيانات باستخدام UNC (\\Server\Share)، تأكد من أن أذونات المشاركة تمنح حساب IUSR_computername وصولاً كاملاً. تنطبق هذه الخطوة حتى لو كانت المشاركة على خادم الويب المحلي.

إذا نسخت قاعدة البيانات من موقع آخر، فقد لا ترث الأذونات من مجلد الوجهة وقد تضطر إلى تغيير أذونات قاعدة البيانات.

فحص أذونات ملف قاعدة البيانات أو تغييرها (Windows XP)

تأكد من أن لديك امتيازات مدير على الكمبيوتر.
في Windows Explorer، حدد موقع ملف قاعدة البيانات أو المجلد الذي يحتوي على قاعدة البيانات، انقر بزر الماوس الأيمن على الملف أو المجلد، وحدد Properties.
حدد علامة التبويب "أمان".

لا تنطبق هذه الخطوة إلا إذا كان لديك نظام ملفات NTFS. أما إذا كان لديك نظام ملفات FAT، فلن يحتوي مربع الحوار على علامة التبويب "أمان".

إذا لم يكن حساب IUSR_computername مدرجاً في قائمة أسماء المجموعات أو المستخدمين، انقر على زر Add لإضافته.
في مربع الحوار "تحديد المستخدمين" أو "المجموعات"، انقر فوق "خيارات متقدمة".

يتغير بعدها مربع الحوار ليعرض مزيدًا من الخيارات.

انقر فوق "المواقع" وحدد اسم الكمبيوتر.
انقر على Find Now لعرض قائمة بأسماء الحساب المرتبطة بالكمبيوتر.
حدد حساب IUSR_computername وانقر على OK؛ ثم انقر على OK مرة أخرى لإغلاق مربع الحوار.
لتعيين أذونات كاملة لحساب IUSR، حدد Full Control وانقر على OK.

تحقق من أذونات ملف قاعدة البيانات أو غيّرها (Windows 2000)

تأكد من أن لديك صلاحيات المسؤول على الكمبيوتر.
في Windows Explorer، حدد موقع ملف قاعدة البيانات أو المجلد الذي يحتوي على قاعدة البيانات، انقر بزر الماوس الأيمن على الملف أو المجلد، وحدد خصائص.
حدد علامة التبويب "أمان".
ملاحظة

لا تنطبق هذه الخطوة إلا إذا كان لديك نظام ملفات NTFS. إذا كان لديك نظام ملفات FAT، فلن يحتوي مربع الحوار على علامة تبويب الأمان.

إذا لم يكن حساب IUSR_computername مدرجاً بين حسابات Windows في مربع حوار File Permissions، انقر على زر Add لإضافته.
في مربع حوار Select Users, Computers, or Groups، حدد اسم الكمبيوتر من قائمة Look In لعرض قائمة بأسماء الحسابات المرتبطة بالكمبيوتر.
حدد حساب IUSR_computername وانقر على Add.
لتعيين أذونات كاملة لحساب IUSR، حدد Full Control من قائمة Type Of Access وانقر على OK.

لمزيد من الأمان، يمكن ضبط الأذونات بحيث يتم تعطيل إذن القراءة لمجلد الويب الذي يحتوي على قاعدة البيانات. لن يُسمح بتصفح المجلد، ولكن صفحات الويب ستظل قادرة على الوصول إلى قاعدة البيانات.

لمزيد من المعلومات حول حساب IUSR وأذونات خادم الويب، راجع الملاحظات التقنية التالية في مركز دعم Adobe:

استكشاف مشاكل رسائل خطأ Microsoft وإصلاحها

يمكن أن تحدث رسائل خطأ Microsoft هذه عندما تطلب صفحة ديناميكية من الخادم إذا كنت تستخدم Internet Information Server (IIS) مع نظام قاعدة بيانات Microsoft مثل Access أو SQL Server.

لا تقدم Adobe الدعم التقني لبرامج من جهات خارجية مثل Microsoft Windows وIIS. إذا لم تحل هذه المعلومات مشكلتك، يرجى الاتصال بالدعم التقني لـMicrosoft أو زيارة موقع دعم Microsoft على http://support.microsoft.com/.

لمزيد من المعلومات حول أخطاء 80004005، راجع "INFO: Troubleshooting Guide for 80004005 Errors in Active Server Pages and Microsoft Data Access Components (Q)" (معلومات: دليل حل مشاكل أخطاء 80004005 في صفحات الخادم النشطة ومكونات الوصول لبيانات Microsoft ‏(Q306518)”، في موقع Microsoft على الويب على 306518http://support.microsoft.com/default.aspx?scid=kb;ar-ae;Q306518.

[[Reference]80004005—لم يتم العثور على اسم مصدر البيانات ولم يتم تحديد برنامج تشغيل افتراضي]

يحدث هذا الخطأ عندما تحاول عرض صفحة ديناميكية في متصفح ويب أو في العرض المباشر. قد تختلف رسالة الخطأ حسب قاعدة البيانات وخادم الويب لديك. تشمل الاختلافات الأخرى لرسالة الخطأ:

  • 80004005—Driver's SQLSetConnectAttr failed

  • 80004005—General error unable to open registry key 'DriverId'

    فيما يلي بيان بالأسباب المحتملة والحلول:

  • يتعذر على الصفحة العثور على DSN. تأكد من أنه قد تم إنشاء DSN على كل من خادم الويب والجهاز المحلي.

  • قد يكون قد تم إعداد DSN كـ DSN لمستخدم، وليس كـ DSN لنظام. احذف DSN لمستخدم وقم بإنشاء DSN لنظام واستبدله به.

إذا لم تحذف DSN لمستخدم، فقد تتسبب أسماء DSN المكررة في إنشاء خطأ ODBC جديد.

إذا كنت تستخدم Microsoft Access، فقد يكون ملف قاعدة البيانات (‎‏‎‎.mdb) مؤمنًا. وقد يكون سبب التأمين هو وصول DNS باسم مختلف إلى قاعدة البيانات. في Windows Explorer، ابحث عن ملف التأمين (ldb.) في المجلد الذي يحتوي على ملف قاعدة البيانات (mdb.) ثم احذف الملف ldb. وإذا كان هناك DSN آخر يشير إلى نفس ملف قاعدة البيانات، فاحذفه لمنع حدوث الخطأ في المستقبل. ولا تنس إعادة تمهيد الكمبيوتر بعد إجراء أي تغييرات.

[[Reference]80004005—لا يمكن استخدام "(unknown)"؛ الملف قيد الاستخدام بالفعل]

يحدث هذا الخطأ عندما تستخدم قاعدة بيانات Microsoft Access وتحاول عرض صفحة ديناميكية في متصفح ويب أو في العرض المباشر. اختلاف آخر لرسالة الخطأ هذه هو "80004005—لا يمكن لمحرك قاعدة بيانات Microsoft Jet فتح الملف (unknown)."

السبب المحتمل هو مشكلة في الأذونات. فيما يلي بيان لبعض الأسباب المحددة والحلول:

  • قد لا يملك الحساب المستخدم من قبل Internet Information Server (عادة IUSR) أذونات Windows الصحيحة لقاعدة بيانات قائمة على الملفات أو للمجلد الذي يحتوي على الملف. تحقق من الأذونات على حساب IIS (IUSR) في مدير المستخدم.

  • قد لا تملك إذنًا لإنشاء أو حذف الملفات المؤقتة. تحقق من الأذونات المتعلقة بالملف والمجلد. تأكد من أن لديك إذنًا لإنشاء أو حذف أي ملفات مؤقتة. عادة ما يتم إنشاء الملفات المؤقتة في نفس المجلد الذي توجد به قاعدة البيانات، ولكن قد يتم إنشاء الملف أيضًا في مجلدات أخرى مثل /Winnt.

  • في Windows 2000، قد تحتاج قيمة المهلة الزمنية إلى تغيير لـDSN قاعدة بيانات Access. لتغيير قيمة المهلة الزمنية، حدد ابدأ > الإعدادات > لوحة التحكم > أدوات إدارية > مصادر البيانات (ODBC). انقر على علامة تبويب النظام، وحدد DSN الصحيح، وانقر على زر تكوين. انقر فوق الزر Options وقم بتغيير القيمة Page Timeout إلى 5000.

    إذا كنت لا تزال تواجه مشاكل، راجع مقالات قاعدة معرفة Microsoft التالية:

  • PRB: 80004005 "لا يمكن استخدام '(unknown)'؛ الملف قيد الاستخدام بالفعل" على http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174943.

  • مشكلة: فشل اتصال قاعدة بيانات Microsoft Access في Active Server Pages في http://support.microsoft.com/default.aspx?scid=kb;en-us;Q253604.

  • PRB: الخطأ “يتعذر فتح الملف غير المعروف” استخدام الوصول على http://support.microsoft.com/default.aspx?scid=kb;ar-ae;Q166029.

[[المرجع]80004005—فشل تسجيل الدخول()]

يحدث هذا الخطأ عند استخدام Microsoft SQL Server ومحاولة عرض صفحة ديناميكية في متصفح الويب أو في طريقة العرض المباشرة.

يتم إنشاء هذا الخطأ بواسطة SQL Server إذا لم يقبل أو يتعرف على حساب تسجيل الدخول أو كلمة المرور التي يتم إرسالها (إذا كنت تستخدم الأمان القياسي)، أو إذا كان حساب Windows لا يرتبط بحساب SQL (إذا كنت تستخدم الأمان المتكامل).

فيما يلي بيان بالحلول المحتملة:

  • إذا كنت تستخدم الأمان القياسي، فقد يكون اسم الحساب وكلمة المرور غير صحيحين. جرّب حساب Admin للنظام وكلمة المرور (UID= "sa" وبدون كلمة مرور)، والتي يجب تعريفها في سطر سلسلة الاتصال. (لا تخزن DSNs أسماء المستخدمين وكلمات المرور.)

  • إذا كنت تستخدم الأمان المتكامل، تحقق من حساب Windows الذي يستدعي الصفحة واعثر على حساب SQL المرتبط به (إن وجد).

  • لا يسمح SQL Server بوجود شرطة سفلية في أسماء حسابات SQL. إذا قام شخص ما بربط حساب Windows IUSR_machinename يدوياً بحساب SQL بنفس الاسم، فسوف يفشل. اربط أي حساب يستخدم شرطة سفلية باسم حساب على SQL لا يستخدم شرطة سفلية.

[[المرجع]80004005—يجب أن تستخدم العملية استعلام قابل للتحديث]

يحدث هذا الخطأ عندما يقوم حدث بتحديث مجموعة سجلات أو إدراج بيانات في مجموعة سجلات.

إليك الأسباب المحتملة والحلول:

  • الأذونات المحددة على المجلد الذي يحتوي على قاعدة البيانات مقيدة جداً. يجب تعيين امتيازات IUSR للقراءة/الكتابة.

  • الأذونات على ملف قاعدة البيانات نفسه لا تحتوي على امتيازات قراءة/كتابة كاملة.

  • قد تكون قاعدة البيانات موجودة خارج دليل Inetpub/wwwroot. على الرغم من أنه يمكنك عرض البيانات والبحث فيها، قد لا تتمكن من تحديثها إلا إذا كانت قاعدة البيانات موجودة في دليل wwwroot.

  • تستند مجموعة السجلات إلى استعلام غير قابل للتحديث. يُعَد الربط مثالاً جيداً على الاستعلامات غير القابلة للتحديث داخل قاعدة البيانات.أعد تنظيم استعلاماتك بحيث تكون قابلة للتحديث.

    لمزيد من المعلومات حول هذا الخطأ، راجع "مشكلة: خطأ ASP 'الاستعلام غير قابل للتحديث' عند تحديث سجل الجدول،" في قاعدة معارف Microsoft في http://support.microsoft.com/default.aspx?scid=kb;en-us;Q174640.

[[المرجع]80040e07—عدم تطابق نوع البيانات في تعبير المعايير]

يحدث هذا الخطأ عندما يحاول الخادم معالجة صفحة تحتوي على سلوك خادم إدراج سجل أو تحديث سجل، ويحاول سلوك الخادم تعيين قيمة عمود التاريخ/الوقت في قاعدة بيانات Microsoft Access إلى سلسلة فارغة ("").

يحتوي Microsoft Access على كتابة بيانات قوية؛ يفرض مجموعة صارمة من القواعد على قيم الأعمدة المحددة. قيمة السلسلة الفارغة في استعلام SQL لا يمكن تخزينها في عمود التاريخ/الوقت في Access. حاليًا، الحل البديل الوحيد المعروف هو تجنب إدراج أو تحديث أعمدة التاريخ/الوقت في Access بسلاسل فارغة ("") أو بأي قيمة أخرى لا تتوافق مع نطاق القيم المحدد لنوع البيانات.

[[Reference]80040e10—Too few parameters]

يحدث هذا الخطأ عندما لا يكون العمود المحدد في استعلام SQL موجودًا في جدول قاعدة البيانات. تحقق من أسماء الأعمدة في جدول قاعدة البيانات مقابل استعلام SQL. سبب هذا الخطأ غالبًا ما يكون خطأ إملائي.

[[Reference]80040e10—COUNT fieldincorrect]

يحدث هذا الخطأ عند معاينة صفحة تحتوي على سلوك خادم Insert Record في متصفح الويب ومحاولة استخدامها لإدراج سجل في قاعدة بيانات Microsoft Access.

قد تحاول إدراج سجل في حقل قاعدة بيانات يحتوي على علامة استفهام (؟) في اسم الحقل. علامة الاستفهام هي رمز خاص لبعض محركات قاعدة البيانات، بما في ذلك Microsoft Access، ولا يجب استخدامها لأسماء جداول قاعدة البيانات أو أسماء الحقول.

افتح نظام قاعدة البيانات واحذف علامة الاستفهام (؟) من أسماء الحقول، وحدّث سلوكيات الخادم في صفحتك التي تشير إلى هذا الحقل.

[[Reference]80040e14—Syntax errorin INSERT INTO statement]

يحدث هذا الخطأ عندما يحاول الخادم معالجة صفحة تحتوي على سلوك خادم Insert Record.

ينتج هذا الخطأ عادة من مشكلة أو أكثر من المشاكل التالية مع اسم حقل أو كائن أو متغير في قاعدة البيانات:

  • استخدام كلمة محجوزة كاسم. تحتوي معظم قواعد البيانات على كلمات محجوزة. على سبيل المثال، تعتبر الكلمة "date" كلمة محجوزة ولا يمكن استخدامها في أسماء الأعمدة بقاعدة البيانات.

  • استخدام أحرف خاصة في الاسم. ومن أمثلة الأحرف الخاصة:

    . / * : ! # & - ?

  • استخدام مسافة في الاسم.

    يمكن أن يحدث الخطأ أيضًا عندما يتم تعريف قناع إدخال لأحد الكائنات في قاعدة البيانات، ولا تتوافق البيانات المدرجة مع القناع.

    لحل المشكلة، تجنب استخدام كلمات محجوزة مثل "date" و"name" و"select" و"where" و"level" عند تحديد أسماء الأعمدة في قاعدة البيانات. واحذف كذلك أي مسافات أو أحرف خاصة.

    راجع صفحات الويب التالية للاطلاع على قوائم بالكلمات المحجوزة لأنظمة قواعد البيانات الشائعة:

  • Microsoft Access على http://support.microsoft.com/default.aspx?scid=kb;ar-ae;Q209187

  • MySQL على http://dev.mysql.com/doc/mysql/en/reserved-words.html

[[Reference]80040e21—ODBC erroron Insert or Update]

يحدث هذا الخطأ عندما يحاول الخادم معالجة صفحة تحتوي على سلوك خادم Update Record أو Insert Record. لا يمكن لقاعدة البيانات التعامل مع عملية التحديث أو الإدراج التي يحاول سلوك الخادم تنفيذها.

فيما يلي الأسباب المحتملة والحلول:

  • يحاول سلوك الخادم تحديث حقل الرقم التلقائي لجدول قاعدة البيانات أو إدراج سجل في حقل الرقم التلقائي. لأن حقول الرقم التلقائي يتم ملؤها تلقائيًا بواسطة نظام قاعدة البيانات، فإن أي محاولة لملئها خارجيًا بقيمة تفشل.

  • البيانات التي يقوم سلوك الخادم بتحديثها أو إدراجها من نوع غير مناسب لحقل قاعدة البيانات، مثل إدراج تاريخ في حقل منطقي (نعم/لا)، أو إدراج سلسلة في حقل رقمي، أو إدراج سلسلة منسقة بشكل غير صحيح في حقل التاريخ/الوقت.

[[Reference]800a0bcd—Either BOFor EOF is true]

يحدث هذا الخطأ عندما تحاول عرض صفحة ديناميكية في متصفح الويب أو في العرض المباشر.

تحدث المشكلة عندما تحاول الصفحة عرض البيانات من مجموعة سجلات فارغة. لحل المشكلة، طبق سلوك الخادم Show Region على المحتوى الديناميكي المراد عرضه على الصفحة، كما يلي:

قم بتمييز المحتوى الديناميكي على الصفحة.

في لوحة Server Behaviors، انقر فوق الزر Plus (+) وحدد Show Region > Show Region If Recordset Is Not Empty.

حدد مجموعة السجلات التي تزود المحتوى الديناميكي وانقر فوق OK.

كرر الخطوات من 1 إلى 3 لكل عنصر من عناصر المحتوى الديناميكي على الصفحة.

استكشاف مشاكل رسائل خطأ MySQL وإصلاحها

إحدى رسائل الخطأ الشائعة التي قد تواجهها عند اختبار اتصال قاعدة بيانات PHP بـ MySQL 4.1 هي "Client does not support authentication protocol requested. فكر في ترقية عميل MySQL.

قد تضطر إلى التراجع إلى إصدار سابق من MySQL، أو تثبيت PHP 5 ونسخ بعض مكتبات الروابط الديناميكية (DLLs). للحصول على تعليمات مفصلة، راجع إعداد بيئة تطوير PHP.