استكشاف مشكلات الاتصال والأخطاء الأخرى في قاعدة بيانات Azure SQL ومثيل Azure SQL المُدار

ينطبق على: Azure SQL Database Azure SQL Managed Instance

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

رسائل خطأ عابرة (40197، 40613 وغيرها)

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

قائمة رموز خطأ عابر

التعليمة البرمجية للخطأ الخطورة الوصف
926 14 لا يمكن فتح قاعدة البيانات "replicatedmaster". تم وضع علامة SUSPECT عليه من خلال الاسترداد. راجع سجل أخطاء SQL Server للحصول على مزيد من المعلومات.

قد يتم تسجيل هذا الخطأ في سجل أخطاء مثيل مُدار من SQL، لفترة قصيرة من الوقت، أثناء المرحلة الأخيرة من إعادة التكوين، بينما يتم إغلاق سجلها الأساسي القديم.
يتم وصف السيناريوهات الأخرى غير المؤقتة التي تتضمن رسالة الخطأ هذه في وثائق أخطاء MSSQL .
4060 ⁧⁩16⁧⁩ لا يمكن فتح قاعدة البيانات "%.*ls" التي طلبها تسجيل الدخول. فشل تسجيل الدخول. لمزيد من المعلومات، راجع أخطاء 4000 إلى 4999
40197 17 واجهت الخدمة خطأ في معالجة طلبك. الرجاء إعادة المحاولة. رمز الخطأ %d.

تتلقى هذا الخطأ عندما تكون الخدمة معطلة بسبب ترقيات البرامج أو الأجهزة أو فشل الأجهزة أو أي مشاكل أخرى في تجاوز الفشل. يوفر رمز الخطأ (%d) المضمن في رسالة الخطأ 40197 معلومات إضافية حول نوع الفشل أو تجاوز الفشل الذي حدث. تم تضمين بعض أمثلة رموز الخطأ في رسالة الخطأ 40197 وهي 40020 و40143 و40166 و40540.

تؤدي إعادة الاتصال تلقائياً إلى اتصالك بنسخة صحية من قاعدة البيانات الخاصة بك. يجب أن يلتقط التطبيق الخاص بك الخطأ 40197، وتسجيل رمز الخطأ المضمن (%d) في الرسالة لاستكشاف الأخطاء وإصلاحها، ومحاولة إعادة الاتصال بقاعدة بيانات SQL حتى تتوفر الموارد، ويتم إنشاء الاتصال مرة أخرى. لمزيد من المعلومات، راجع أخطاء عابرة .
40501 20 الخدمة مشغولة حالياً. أعد محاولة الطلب بعد 10 ثوانٍ. معرف الحادث: %ls. الكود:%d. لمزيد من المعلومات، انظر:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
40613 17 قاعدة البيانات '%.*ls' على الخادم '%.*ls' غير متوفرة حالياً. يرجى إعادة الاتصال لاحقاً. إذا استمرت المشكلة، فاتصل بدعم العملاء، وقم بتزويدهم بمعرف تتبع الجلسة لـ '%.*ls'.

قد يحدث هذا الخطأ إذا كان هناك بالفعل اتصال مسؤول مخصص (DAC) تم إنشاؤه لقاعدة البيانات. لمزيد من المعلومات، راجع أخطاء عابرة .
49918 ⁧⁩16⁧⁩ لا يمكن معالجة الطلب. لا توجد موارد كافية لمعالجة الطلب.

الخدمة مشغولة حالياً. يرجى إعادة الطلب لاحقاً. لمزيد من المعلومات، انظر:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
49919 ⁧⁩16⁧⁩ لا يمكن معالجة طلب الإنشاء أو التحديث. هناك عدد هائل من عمليات الإنشاء أو التحديث قيد التقدم للاشتراك "%ld".

الخدمة مشغولة بمعالجة طلبات إنشاء أو تحديث متعددة لاشتراكك أو خادمك. الطلبات محظورة حاليا لتحسين الموارد. استعلام عن sys.dm_operation_status للعمليات المعلقة. انتظر حتى تكتمل طلبات الإنشاء أو التحديث المعلقة أو احذف أحد طلباتك المعلقة وأعد محاولة طلبك لاحقاً. لمزيد من المعلومات، انظر:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
49920 ⁧⁩16⁧⁩ لا يمكن معالجة الطلب. هناك عدد كبير جداً من العمليات قيد التقدم للاشتراك "%ld".

الخدمة مشغولة بمعالجة طلبات متعددة لهذا الاشتراك. الطلبات محظورة حاليا لتحسين الموارد. استعلام عن sys.dm_operation_status لحالة العملية. انتظر حتى تكتمل الطلبات المعلقة أو احذف أحد طلباتك المعلقة وأعد محاولة طلبك لاحقاً. لمزيد من المعلومات، انظر:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
4221 ⁧⁩16⁧⁩ فشل تسجيل الدخول للقراءة الثانوية بسبب الانتظار الطويل على "HADR_DATABASE_WAIT_FOR_TRANSITION_TO_VERSIONING". النسخة المتماثلة غير متاحة لتسجيل الدخول لأن إصدارات الصف مفقودة للمعاملات التي تمت أثناء الطيران عندما تمت إعادة استخدام النسخة المتماثلة. يمكن حل المشكلة عن طريق التراجع أو تنفيذ المعاملات النشطة على النسخة المتماثلة الأساسية. يمكن التقليل من حدوث هذا الشرط عن طريق تجنب حركات الكتابة الطويلة على الأساسي.
615 21 تعذر العثور على معرّف قاعدة البيانات ٪d، الاسم '%.*ls' . رمز الخطأ: 615.
هذا يعني أن ذاكرة التخزين المؤقت في الذاكرة غير متزامنة مع مثيل خادم SQL وأن عمليات البحث تسترد معرّف قاعدة البيانات الذي لا معنى له.

تستخدم عمليات تسجيل الدخول إلى SQL ذاكرة التخزين المؤقت في الذاكرة للحصول على اسم قاعدة البيانات لتعيين المعرف. يجب أن تتزامن ذاكرة التخزين المؤقت مع قاعدة البيانات الخلفية ويتم تحديثها متى تم إرفاق وفصل قاعدة البيانات إلى/من مثيل خادم SQL.
تتلقى هذا الخطأ عندما يفشل فصل سير العمل في تنظيف ذاكرة التخزين المؤقت بالذاكرة في الوقت المحدد وتشير عمليات البحث اللاحقة إلى قاعدة البيانات إلى معرّف قاعدة البيانات الذي لا معنى له.

حاول إعادة الاتصال بقاعدة بيانات SQL حتى يتوفر المورد، ويتم إنشاء الاتصال مرة أخرى. لمزيد من المعلومات، راجع أخطاء عابرة .

خطوات لحل مشكلات الاتصال العابرة

  1. تحقق من لوحة معلومات خدمة Microsoft Azure بحثاً عن أي حالات انقطاع معروفة حدثت أثناء الوقت الذي أبلغ فيه التطبيق عن الأخطاء.
  2. يجب أن تتوقع التطبيقات التي تتصل بخدمة سحابية مثل قاعدة بيانات Azure SQL أحداث إعادة التكوين الدورية وتنفذ منطق إعادة المحاولة لمعالجة هذه الأخطاء بدلاً من عرض أخطاء التطبيق للمستخدمين.
  3. مع اقتراب قاعدة البيانات من حدود مواردها، قد تبدو مشكلة اتصال عابرة. راجع حدود الموارد .
  4. إذا استمرت مشكلات الاتصال، أو إذا تجاوزت المدة التي واجه فيها التطبيق الخطأ 60 ثانية أو إذا رأيت تكراراً للخطأ في يوم معين، فقم بتقديم طلب دعم Azure عن طريق تحديد الحصول على الدعم على موقع دعم Azure .

تنفيذ منطق إعادة المحاولة

يوصى بشدة أن يقوم برنامج العميل بإعادة المحاولة المنطقية حتى يتمكن من إعادة إنشاء اتصال بعد إعطاء وقت الخطأ العابر لتصحيح نفسه. نوصيك بالتأخير لمدة 5 ثوانٍ قبل إعادة المحاولة الأولى. قد تؤدي إعادة المحاولة بعد تأخير أقصر من 5 ثوانٍ إلى إرباك الخدمة السحابية. لكل محاولة لاحقة، يجب أن يزيد التأخير بشكل كبير، بحد أقصى 60 ثانية.

للحصول على أمثلة التعليمات البرمجية لمنطق إعادة المحاولة، راجع:

للحصول على معلومات إضافية حول معالجة الأخطاء العابرة في مراجعة التطبيق الخاص بك استكشاف أخطاء الاتصال العابرة بقاعدة بيانات SQL وإصلاحها

مناقشة فترة المنع للعملاء الذين يستخدمون ADO.NET متاح في Connection Pooling (ADO.NET) .

تحدث المشكلة إذا تعذر على التطبيق الاتصال بالخادم.

لحل هذه المشكلة، جرّب الخطوات (بالترتيب الموضح) في قسم خطوات إصلاح مشكلات الاتصال الشائعة .

لم يتم العثور على الخادم / المثيل أو تعذر الوصول إليه (الأخطاء 26، 40، 10053)

خطأ 26: خطأ في تحديد موقع الخادم

System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections.(provider: SQL Network Interfaces, error: 26 – Error Locating Server/Instance Specified)

خطأ 40: تعذر فتح اتصال بالخادم

A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

خطأ 10053: حدث خطأ على مستوى النقل عند تلقي النتائج من الخادم

10053: A transport-level error has occurred when receiving results from the server. (Provider: TCP Provider, error: 0 - An established connection was aborted by the software in your host machine)

تحدث هذه المشكلات إذا تعذر على التطبيق الاتصال بالخادم.

لحل هذه المشكلات، جرب الخطوات (بالترتيب الموضح) في قسم خطوات إصلاح مشكلات الاتصال الشائعة .

لا يمكن الاتصال بالخادم بسبب مشاكل في جدار الحماية

خطأ 40615: يتعذر الاتصال بـ < servername >

لحل هذه المشكلة، قم بتكوين إعدادات جدار الحماية في قاعدة بيانات SQL من خلال مدخل Azure .

خطأ 5: يتعذر الاتصال بـ < servername >

لحل هذه المشكلة، تأكد من أن المنفذ 1433 مفتوح للاتصالات الصادرة على كافة جدران الحماية بين العميل والإنترنت.

تعذر تسجيل الدخول إلى الخادم (الأخطاء 18456، 40531)

فشل تسجيل الدخول للمستخدم "< اسم المستخدم >"

Login failed for user '<User name>'.This session has been assigned a tracing ID of '<Tracing ID>'. Provide this tracing ID to customer support when you need assistance. (Microsoft SQL Server, Error: 18456)

لحل هذه المشكلة، اتصل بمسؤول الخدمة لتزويدك باسم مستخدم وكلمة مرور صالحين.

عادةً، يمكن لمسؤول الخدمة استخدام الخطوات التالية لإضافة بيانات اعتماد تسجيل الدخول:

  1. قم بتسجيل الدخول إلى الخادم باستخدام SQL Server Management Studio (SSMS).

  2. قم بتشغيل استعلام SQL التالي في قاعدة البيانات master للتحقق مما إذا كان اسم تسجيل الدخول معطلاً:

    SELECT name, is_disabled FROM sys.sql_logins;
    
  3. إذا تم تعطيل الاسم المقابل، فقم بتمكينه باستخدام العبارة التالية:

    ALTER LOGIN <User name> ENABLE;
    
  4. إذا كان اسم مستخدم تسجيل الدخول إلى SQL غير موجود، فقم بتحرير وتشغيل استعلام SQL التالي لإنشاء تسجيل دخول SQL جديد:

    CREATE LOGIN <SQL_login_name, sysname, login_name>
    WITH PASSWORD = '<password, sysname, Change_Password>';
    GO
    
  5. في SSMS Object Explorer، قم بتوسيع قواعد البيانات .

  6. حدد قاعدة البيانات التي تريد منح المستخدم الإذن لها.

  7. انقر بزر الماوس الأيمن فوق الأمان ، ثم حدد جديد ، مستخدم.

  8. في البرنامج النصي الذي تم إنشاؤه مع العناصر النائبة (النموذج معروض أدناه)، استبدل معلمات النموذج باتباع الخطوات هنا وقم بتنفيذها:

    CREATE USER [<user_name, sysname, user_name>]
    FOR LOGIN [<login_name, sysname, login_name>]
    WITH DEFAULT_SCHEMA = [<default_schema, sysname, dbo>];
    GO
    
    -- Add user to the database owner role
    EXEC sp_addrolemember N'db_owner', N'<user_name, sysname, user_name>';
    GO
    

    يمكنك أيضاً استخدام sp_addrolememberلتعيين مستخدمين محددين لأدوار قاعدة بيانات معينة.

    ملاحظة

    في قاعدة بيانات Azure SQL، ضع في اعتبارك بناء جملة ALTER ROLE الأحدث لإدارة عضوية دور قاعدة البيانات.

لمزيد من المعلومات، راجع إدارة قواعد البيانات وتسجيلات الدخول في قاعدة بيانات Azure SQL .

انتهت أخطاء مهلة الاتصال

System.Data.SqlClient.SqlException (0x80131904): انتهت مهلة الاتصال

System.Data.SqlClient.SqlException (0x80131904): Connection Timeout Expired. The timeout period elapsed while attempting to consume the pre-login handshake acknowledgement. This could be because the pre-login handshake failed or the server was unable to respond back in time. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=3; handshake=29995;

System.Data.SqlClient.SqlException (0x80131904): انتهت صلاحية المهلة

System.Data.SqlClient.SqlException (0x80131904): Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.Entity.Core.EntityException: فشل الموفر الأساسي عند الفتح

System.Data.Entity.Core.EntityException: The underlying provider failed on Open. -> System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding. -> System.ComponentModel.Win32Exception: The wait operation timed out

يتعذر الاتصال بـ < اسم الخادم >

Cannot connect to <server name>.ADDITIONAL INFORMATION:Connection Timeout Expired. The timeout period elapsed during the post-login phase. The connection could have timed out while waiting for server to complete the login process and respond; Or it could have timed out while attempting to create multiple active connections. The duration spent while attempting to connect to this server was - [Pre-Login] initialization=231; handshake=983; [Login] initialization=0; authentication=0; [Post-Login] complete=13000; (Microsoft SQL Server, Error: -2) For help, click: http://go.microsoft.com/fwlink?ProdName=Microsoft%20SQL%20Server&EvtSrc=MSSQLServer&EvtID=-2&LinkId=20476 The wait operation timed out

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

تنتهي مهلات الاتصال لأن التطبيق لا يمكنه الاتصال بالخادم. لحل هذه المشكلة، جرّب الخطوات (بالترتيب الموضح) في قسم خطوات إصلاح مشكلات الاتصال الشائعة .

أخطاء إدارة الموارد

تستخدم قاعدة بيانات Azure SQL تنفيذ إدارة الموارد بناءً على Resource Governor لفرض حدود الموارد. تعرف على المزيد حول إدارة الموارد في قاعدة بيانات Azure SQL.

يتم سرد أخطاء إدارة الموارد الأكثر شيوعاً أولاً بالتفاصيل، متبوعة بجدول رسائل الخطأ الخاصة بإدارة الموارد.

خطأ 10928: معرف المورد: 1. حد طلب قاعدة البيانات هو %d وتم الوصول إليه.

تقرأ رسالة الخطأ التفصيلية في هذه الحالة: Resource ID : 1. The request limit for the database is %d and has been reached. See 'http://go.microsoft.com/fwlink/?LinkId=267637' for assistance.

تشير رسالة الخطأ هذه إلى أنه تم الوصول إلى حد العامل لقاعدة بيانات Azure SQL. ستكون القيمة موجودة بدلاً من العنصر النائب ٪d. تشير هذه القيمة إلى حد العامل لقاعدة البيانات الخاصة بك في وقت الوصول إلى الحد الأقصى.

ملاحظة

يدعم العرض الأولي لقاعدة بيانات Azure SQL الاستعلامات المترابطة الفردية فقط. في ذلك الوقت، كان عدد الطلبات دائماً مساوياً لعدد العمال. تحتوي رسالة الخطأ 10928 في قاعدة بيانات Azure SQL على الصياغة "حد طلب قاعدة البيانات هو N وتم الوصول إليه" لأغراض التوافق مع الإصدارات السابقة. الحد الذي تم الوصول إليه هو في الواقع عدد العمال. إذا كان إعداد الحد الأقصى لدرجة التوازي (MAXDOP) يساوي صفراً أو أكبر من واحد، فقد يكون عدد العمال أكبر بكثير من عدد الطلبات، وقد يتم الوصول إلى الحد في وقت أقرب بكثير مما هو عليه عندما يكون MAXDOP يساوي واحداً.

تعرف على المزيد حول الجلسات والعمال والطلبات.

الاتصال مع اتصال المسؤول المخصص (DAC) إذا لزم الأمر

في حالة استمرار وقوع حادث مباشر حيث تم الاقتراب من حد العامل أو الوصول إليه، فقد تتلقى الخطأ 10928 عند الاتصال باستخدام SQL Server Management Studio (SSMS) أو Azure Data Studio. يمكن الاتصال بجلسة واحدة باستخدام الاتصال التشخيصي لمسؤولي قاعدة البيانات (DAC) حتى عند الوصول إلى الحد الأقصى للعمال.

لإنشاء اتصال بـ DAC من SSMS:

  • من القائمة، حدد File > New > Database Engine Query
  • من مربع حوار الاتصال في حقل اسم الخادم، أدخل admin:<fully_qualified_server_name>(سيكون هذا شيئاً مثل admin:servername.database.windows.net).
  • حدد Options >>
  • تحديد علامة التبويب خصائص الاتصال
  • في المربع اتصال بقاعدة البيانات:، اكتب اسم قاعدة البيانات الخاصة بك
  • اختر Connect.

إذا تلقيت الخطأ 40613، Database '%.&#x2a;ls' on server '%.&#x2a;ls' is not currently available. Please retry the connection later. If the problem persists, contact customer support, and provide them the session tracing ID of '%.&#x2a;ls'، فقد يشير هذا إلى أن جلسة أخرى متصلة بالفعل بـ DAC. يمكن لجلسة واحدة فقط الاتصال بـ DAC لقاعدة بيانات واحدة أو تجمع مرن في كل مرة.

إذا واجهت الخطأ "فشل الاتصال بالخادم" بعد تحديد اتصال، فربما تم إنشاء جلسة DAC بنجاح إذا كنت تستخدم إصدار SSMS قبل 18.9. حاولت الإصدارات المبكرة من SSMS توفير التحسس الذكي للاتصالات إلى DAC. فشل هذا، لأن DAC لا يدعم سوى عامل واحد ويتطلب التحسس عاملاً منفصلاً.

لا يمكنك استخدام اتصال DAC مع مستكشف الكائنات.

راجع استخدامك max_worker_percent

للعثور على إحصائيات استهلاك الموارد لقاعدة بياناتك لمدة 14 يوماً، استعلم عن طريقة عرض كتالوج النظام sys.resource_stats. يُظهر العمود max_worker_percent النسبة المئوية للعمال المستخدمين بالنسبة إلى حد العامل لقاعدة البيانات الخاصة بك. اتصل بقاعدة البيانات الرئيسية على الخادم المنطقي للاستعلام sys.resource_stats.

SELECT start_time, end_time, database_name, sku, avg_cpu_percent, max_worker_percent, max_session_percent 
FROM sys.resource_stats;

يمكنك أيضاً الاستعلام عن إحصائيات استهلاك الموارد من الساعة الأخيرة من عرض الإدارة الديناميكي sys.dm_db_resource_stats. الاتصال مباشرة بقاعدة البيانات للاستعلام عن sys.dm_db_resource_stats.

SELECT end_time, avg_cpu_percent, max_worker_percent, max_session_percent
FROM sys.dm_db_resource_stats;

تقليل استخدام العاملين عند الإمكان

قد تتسبب سلاسل الحظر في زيادة مفاجئة في عدد العاملين في قاعدة البيانات. قد يؤدي وجود عدد كبير من الاستعلامات المتوازية المتزامنة إلى ارتفاع عدد العاملين. قد تؤدي زيادة الحد الأقصى لدرجة التوازي (MAXDOP) أو تعيين MAXDOP إلى صفر إلى زيادة عدد العاملين النشطين.

فرز حادثة مع عدد غير كافٍ من العمال باتباع الخطوات التالية:

  1. تحقق مما إذا كان يحدث حظر أو إذا كان يمكنك تحديد عدد كبير من العمال المتزامنين. تشغيل الاستعلام التالي لفحص الطلبات الحالية والتحقق من الحظر عندما تقوم قاعدة البيانات بإرجاع الخطأ 10928. قد تحتاج إلى الاتصال مع اتصال مسؤول مخصص (DAC) لتنفيذ الاستعلام.

    SELECT
        r.session_id, r.request_id, r.blocking_session_id, r.start_time, 
        r.status, r.command, DB_NAME(r.database_id) AS database_name,
        (SELECT COUNT(*) 
            FROM sys.dm_os_tasks AS t 
            WHERE t.session_id=r.session_id and t.request_id=r.request_id) AS worker_count,
        i.parameters, i.event_info AS input_buffer,
        r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time,
        r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name
    FROM sys.dm_exec_requests as r
    JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id
    OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i
    WHERE s.is_user_process=1;
    GO
    
    1. ابحث عن الصفوف التي تحتوي على blocking_session_id لتحديد الجلسات المحظورة. ابحث عن كل blocking_session_id في القائمة لتحديد ما إذا قد تم حظر هذه الجلسة أيضاً. وهذا سيؤدي في نهاية المطاف إلى مانع الرأس. ضبط استعلام مانع الرأس.

      ملاحظة

      لمزيد من المعلومات الشاملة حول استكشاف أخطاء الاستعلامات التي تعمل لفترة طويلة أو حظرها، راجع فهم مشكلات حظر قاعدة بيانات Azure SQL وحلها .

    2. لتحديد حجم كبير من العمال المتزامنين، راجع عدد الطلبات بشكل عام والعمود worker_count لكل طلب. Worker_count هو عدد العمال في وقت أخذ العينات وقد يتغير بمرور الوقت أثناء تنفيذ الطلب. تعيين الاستعلامات لتقليل استخدام الموارد إذا كان سبب زيادة العاملين هو الاستعلامات المتزامنة التي تعمل بالدرجة المثلى من التوازي. لمزيد من المعلومات، راجع ضبط الاستعلام / التلميح .

  2. تقييم إعداد الحد الأقصى درجة التوازي (MAXDOP) لقاعدة البيانات.

زيادة حدود العاملين

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

البحث عن حدود الموارد لقاعدة بيانات azure SQL حسب مستوى الخدمة وحجم الحساب:

تعرف على المزيد حول إدارة موارد قاعدة بيانات Azure SQL للعاملين.

خطأ 10929: معرف المورد: 1

10929: Resource ID: 1. The %s minimum guarantee is %d, maximum limit is %d and the current usage for the database is %d. However, the server is currently too busy to support requests greater than %d for this database. See http://go.microsoft.com/fwlink/?LinkId=267637 for assistance. Otherwise, please try again later.

خطأ 40501: الخدمة مشغولة حالياً

40501: The service is currently busy. Retry the request after 10 seconds. Incident ID: %ls. Code: %d.

هذا خطأ في اختناق المحرك، وهو إشارة إلى تجاوز حدود الموارد.

لمزيد من المعلومات حول حدود الموارد، راجع حدود موارد خادم SQL المنطقي .

خطأ 40544: وصلت قاعدة البيانات إلى الحصة النسبية لحجمها

40544: The database has reached its size quota. Partition or delete data, drop indexes, or consult the documentation for possible resolutions. Incident ID: <ID>. Code: <code>.

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

يمكن أن تساعدك الخطوات التالية إما في التغلب على المشكلة أو تزويدك بمزيدٍ من الخيارات:

  1. تحقق من الحجم الحالي لقاعدة البيانات باستخدام لوحة المعلومات في مدخل Azure.

    ملاحظة

    لتحديد الجداول التي تستهلك أكبر مساحة وبالتالي فهي مرشحة محتملة للتنظيف، قم بتشغيل استعلام SQL التالي:

    SELECT o.name,
     SUM(p.row_count) AS 'Row Count',
     SUM(p.reserved_page_count) * 8.0 / 1024 AS 'Table Size (MB)'
    FROM sys.objects o
    JOIN sys.dm_db_partition_stats p on p.object_id = o.object_id
    GROUP BY o.name
    ORDER BY [Table Size (MB)] DESC;
    GO
    
  2. إذا كان الحجم الحالي لا يتجاوز الحد الأقصى للحجم المدعوم لإصدارك، فيمكنك استخدام ALTER DATABASE لزيادة إعداد MAXSIZE.

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

    • تنفيذ أنشطة تنظيف قاعدة البيانات العادية. على سبيل المثال، قم بتنظيف البيانات غير المرغوب فيها باستخدام اقتطاع / حذف، أو نقل البيانات باستخدام SQL Server Integration Services (SSIS) أو الأداة المساعدة لبرنامج النسخ المجمّع (bcp).
    • قسّم البيانات أو احذفها أو أسقط الفهارس أو ابحث في الوثائق لمعرفة الحلول الممكنة.
    • لتغيير حجم قاعدة البيانات، راجع ⁦⁩توسيع نطاق موارد قاعدة البيانات الفردية⁦⁩ و⁦⁩قياس موارد التجمع المرن⁦⁩.

خطأ 40549: تم إنهاء الجلسة لأن لديك معاملة طويلة الأمد

40549: Session is terminated because you have a long-running transaction. Try shortening your transaction.

إذا واجهت هذا الخطأ بشكل متكرر، فحاول حل المشكلة باتباع الخطوات التالية:

  1. بتشغيل الاستعلام التالي لرؤية أي جلسات مفتوحة ذات قيمة عالية للعمود duration_ms:

    SELECT
        r.start_time, DATEDIFF(ms,start_time, SYSDATETIME()) as duration_ms, 
    	r.session_id, r.request_id, r.blocking_session_id,  
        r.status, r.command, DB_NAME(r.database_id) AS database_name,
        i.parameters, i.event_info AS input_buffer,
        r.last_wait_type, r.open_transaction_count, r.total_elapsed_time, r.cpu_time,
        r.logical_reads, r.writes, s.login_time, s.login_name, s.program_name, s.host_name
    FROM sys.dm_exec_requests as r
    JOIN sys.dm_exec_sessions as s on r.session_id=s.session_id
    OUTER APPLY sys.dm_exec_input_buffer (r.session_id,r.request_id) AS i
    WHERE s.is_user_process=1
    ORDER BY start_time ASC;
    GO
    

    يمكنك اختيار تجاهل الصفوف حيث input_buffer يعرض العمود قراءة استعلام من sys.fn_MSxe_read_event_stream: ترتبط هذه الطلبات بجلسات عمل الحدث الموسعة.

  2. راجع العمود blocking_session_id لمعرفة ما إذا كان الحظر يساهم في المعاملات طويلة الأمد.

    ملاحظة

    لمزيد من المعلومات حول استكشاف أخطاء الحظر وإصلاحها في قاعدة بيانات Azure SQL، راجع فهم مشكلات حظر قاعدة بيانات Azure SQL وحلها .

  3. فكر في تجميع الاستعلامات. للحصول على معلومات حول التجميع، راجع كيفية استخدام التجميع لتحسين أداء تطبيق قاعدة بيانات SQL .

خطأ 40551: تم إنهاء الجلسة بسبب الاستخدام المفرط لـ TEMPDB

40551: The session has been terminated because of excessive TEMPDB usage. Try modifying your query to reduce the temporary table space usage.

للتغلب على هذه المشكلة، اتبع الخطوات التالية:

  1. قم بتغيير الاستعلامات لتقليل استخدام مساحة الجدول المؤقتة.
  2. قم بإسقاط الأشياء المؤقتة بعد عدم الحاجة إليها.
  3. اقتطاع الجداول أو إزالة الجداول غير المستخدمة.

خطأ 40552: تم إنهاء جلسة العمل بسبب الاستخدام المفرط لمساحة سجل المعاملة

40552: The session has been terminated because of excessive transaction log space usage. Try modifying fewer rows in a single transaction.

لحل هذه المشكلة، حاول باستخدام الطرق التالية:

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

  • يمكن أن تحدث هذه المشكلة بسبب عمليات إعادة إنشاء الفهرس. للتغلب على هذه المشكلة، تأكد من عدد الصفوف المتأثرة في الجدول * (متوسط حجم الحقل الذي تم تحديثه بالبايت + 80) < 2 غيغابايت (GB).

    ملاحظة

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

    ملاحظة

    لمزيد من المعلومات حول استكشاف أخطاء سجل المعاملات الكامل وإصلاحها في قاعدة بيانات Azure SQL ومثيل Azure SQL المُدار، راجع استكشاف أخطاء سجل المعاملات وإصلاحها باستخدام قاعدة بيانات Azure SQL ومثيل Azure SQL المُدار .

خطأ 40553: تم إنهاء الجلسة بسبب الاستخدام الزائد للذاكرة

40553: The session has been terminated because of excessive memory usage. Try modifying your query to process fewer rows.

كمحاولة للتغلب على هذه المشكلة حاول تحسين الاستعلام.

للحصول على إجراء تفصيلي لاستكشاف الأخطاء وإصلاحها، راجع هل الاستعلام الخاص بي يعمل بشكل جيد في السحابة؟ .

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

جدول رسائل خطأ إدارة الموارد

التعليمة البرمجية للخطأ الخطورة الوصف
10928 20 معرف المورد:%d. حد%s لقاعدة البيانات هو%d وتم الوصول إليه. انظر 'http://go.microsoft.com/fwlink/?LinkId=267637' للحصول على المساعدة..

يشير معرف المورد إلى المورد الذي وصل إلى الحد الأقصى. عندما يكون معرف المورد = 1، فهذا يشير إلى الوصول إلى حد العامل. تعرف على المزيد في الخطأ 10928: معرف المورد: 1. حد طلب قاعدة البيانات هو ٪d وتم الوصول إليه. عندما يكون معرف المورد = 2، يشير هذا إلى أن حد الجلسة قد تم الوصول إليه.

تعرف على المزيد حول حدود الموارد:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
10929 20 معرف المورد:%d. الحد الأدنى للضمان%s هو%d، والحد الأقصى هو%d، والاستخدام الحالي لقاعدة البيانات هو%d. ومع ذلك، فإن الخادم مشغول جداً حالياً لدعم الطلبات الأكبر من%d لقاعدة البيانات هذه. يشير معرف المورد إلى المورد الذي وصل إلى الحد الأقصى. بالنسبة إلى مؤشرات الترابط العاملة، معرف المورد = 1. للجلسات، معرف المورد = 2. لمزيد من المعلومات، انظر:
حدود موارد خادم SQL المنطقي
الحدود المستندة إلى DTU لقواعد البيانات الفردية
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
خلاف ذلك، حاول مرة أخرى في وقت لاحق.
40544 20 وصلت قاعدة البيانات إلى حصة حجمها. قسّم البيانات أو احذفها أو أسقط الفهارس أو ابحث في الوثائق لمعرفة الحلول الممكنة. لتغيير حجم قاعدة البيانات، راجع ⁦⁩توسيع نطاق موارد قاعدة البيانات الفردية⁦⁩ و⁦⁩قياس موارد التجمع المرن⁦⁩.
40549 ⁧⁩16⁧⁩ تم إنهاء الجلسة لأن لديك معاملة طويلة الأمد. حاول تقصير معاملتك. للحصول على معلومات حول التجميع، راجع كيفية استخدام التجميع لتحسين أداء تطبيق قاعدة بيانات SQL .
40550 ⁧⁩16⁧⁩ تم إنهاء الجلسة لأنها حصلت على عدد كبير جداً من الأقفال. حاول قراءة أو تعديل عدد أقل من الصفوف في معاملة واحدة. للحصول على معلومات حول التجميع، راجع كيفية استخدام التجميع لتحسين أداء تطبيق قاعدة بيانات SQL .
40551 ⁧⁩16⁧⁩ تم إنهاء الجلسة بسبب الإفراط في استخدام TEMPDB. حاول تعديل الاستعلام لتقليل استخدام مساحة الجدول المؤقتة.

إذا كنت تستخدم كائنات مؤقتة، فاحفظ مساحة في قاعدة بيانات TEMPDBعن طريق إسقاط الكائنات المؤقتة بعد أن لا تعود الجلسة بحاجة إليها. لمزيد من المعلومات حول حدود tempdb في قاعدة بيانات SQL، راجع قاعدة بيانات Tempdb في قاعدة بيانات SQL.
40552 ⁧⁩16⁧⁩ تم إنهاء الجلسة بسبب الاستخدام المفرط لمساحة سجل المعاملات. حاول تعديل عدد أقل من الصفوف في معاملة واحدة. للحصول على معلومات حول التجميع، راجع كيفية استخدام التجميع لتحسين أداء تطبيق قاعدة بيانات SQL .

إذا أجريت إدخالات مجمعة باستخدام الأداة المساعدة bcp.exeأو الفئة System.Data.SqlClient.SqlBulkCopy، فحاول استخدام الخيارين -b batchsizeأو BatchSizeللحد من عدد الصفوف المنسوخة إلى الخادم في كل معاملة . إذا كنت تعيد إنشاء فهرس باستخدام العبارة ALTER INDEX، فحاول استخدام الخيار REBUILD WITH ONLINE = ON. للحصول على معلومات حول أحجام سجل المعاملات لنموذج شراء vCore، راجع:
الحدود المستندة إلى vCore لقواعد البيانات الفردية
الحدود المستندة إلى vCore للمجموعات المرنة
حدود موارد مثيل Azure SQL المُدارة.
40553 ⁧⁩16⁧⁩ تم إنهاء الجلسة بسبب الاستخدام المفرط للذاكرة. حاول تعديل الاستعلام لمعالجة عدد أقل من الصفوف.

يؤدي تقليل عدد عمليات ⁦ORDER BY⁩ و⁦GROUP BY⁩ في رمز Transact-SQL إلى تقليل متطلبات الذاكرة لاستعلامك. لتغيير حجم قاعدة البيانات، راجع ⁦⁩توسيع نطاق موارد قاعدة البيانات الفردية⁦⁩ و⁦⁩قياس موارد التجمع المرن⁦⁩. لمزيد من المعلومات حول أخطاء الذاكرة والاستعلامات النموذجية، راجع استكشاف أخطاء الذاكرة وإصلاحها باستخدام قاعدة بيانات azure SQL.

أخطاء التجمع المرن

تتعلق الأخطاء التالية بإنشاء واستخدام تجمعات مرنة:

التعليمة البرمجية للخطأ الخطورة الوصف إجراء تصحيحي
1132 17 وصل التجمع المرن إلى حد التخزين الخاص به. لا يمكن أن يتجاوز استخدام التخزين للمجمع المرن (%d) ميغا بايت. محاولة كتابة البيانات إلى قاعدة بيانات عند الوصول إلى حد تخزين التجمع المرن. للحصول على معلومات حول حدود الموارد، انظر:
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore للمجموعات المرنة.
ضع في اعتبارك زيادة DTUs و/ أو إضافة تخزين إلى البركة المرنة إذا كان ذلك ممكناً من أجل زيادة حد التخزين الخاص به، أو تقليل التخزين المستخدم بواسطة قواعد البيانات الفردية داخل المجمع المرن، أو إزالة قواعد البيانات من التجمع المرن. لتحجيم حمام السباحة المرن، راجع توسيع نطاق موارد الحوض المرن. لمزيد من المعلومات حول إزالة المساحة غير المستخدمة من قواعد البيانات، راجع إدارة مساحة الملف لقواعد البيانات في قاعدة بيانات Azure SQL .
10929 ⁧⁩16⁧⁩ الحد الأدنى للضمان%s هو%d، والحد الأقصى هو%d، والاستخدام الحالي لقاعدة البيانات هو%d. ومع ذلك، فإن الخادم مشغول جداً حالياً لدعم الطلبات الأكبر من%d لقاعدة البيانات هذه. للحصول على معلومات حول حدود الموارد، انظر:
الحدود المستندة إلى DTU للمجموعات المرنة
الحدود المستندة إلى vCore للمجموعات المرنة.
خلاف ذلك، حاول مرة أخرى في وقت لاحق. DTU / vCore دقيقة لكل قاعدة بيانات ؛ DTU / vCore كحد أقصى لكل قاعدة بيانات. حاول العدد الإجمالي للعمال المتزامنين عبر جميع قواعد البيانات في التجمع المرن تجاوز حد التجمع.
ضع في اعتبارك زيادة DTUs أو vCores للمجموعة المرنة إن أمكن من أجل زيادة حد العمال، أو إزالة قواعد البيانات من التجمع المرن.
40844 ⁧⁩16⁧⁩ قاعدة البيانات '%ls' على الخادم '%ls' هي قاعدة بيانات إصدار '%ls' في تجمع مرن ولا يمكن أن تكون لها علاقة نسخ مستمرة. غير متوفر
40857 ⁧⁩16⁧⁩ لم يتم العثور على التجمع المرن للخادم: '%ls'، اسم التجمع المرن: '%ls'. التجمع المرن المحدد غير موجود في الخادم المحدد. أدخل اسم تجمع مرن صالحاً.
40858 ⁧⁩16⁧⁩ التجمع المرن '%ls' موجود بالفعل في الخادم: '%ls'. التجمع المرن المحدد موجود بالفعل في الخادم المحدد. أدخل اسم تجمع مرن جديد.
40859 ⁧⁩16⁧⁩ لا يدعم التجمع المرن طبقة الخدمة '%ls'. طبقة الخدمة المحددة غير مدعومة لتوفير المجمع المرن. قم بتوفير الإصدار الصحيح أو اترك طبقة الخدمة فارغة لاستخدام طبقة الخدمة الافتراضية.
40860 ⁧⁩16⁧⁩ التجمع المرن '%ls' وتركيبة هدف الخدمة '%ls' غير صالحة. يمكن تحديد التجمع المرن وطبقة الخدمة معاً فقط إذا تم تحديد نوع المورد كـ "ElasticPool". حدد التركيبة الصحيحة للتجمع المرن وطبقة الخدمة.
40861 ⁧⁩16⁧⁩ لا يمكن أن يكون إصدار قاعدة البيانات '%.*ls' مختلفاً عن مستوى خدمة التجمع المرن وهي '%.*ls'. إصدار قاعدة البيانات يختلف عن طبقة خدمة التجمع المرن. لا تحدد إصدار قاعدة بيانات مختلف عن طبقة خدمة التجمع المرن. لاحظ أن إصدار قاعدة البيانات لا يحتاج إلى التحديد.
40862 ⁧⁩16⁧⁩ يجب تحديد اسم التجمع المرن إذا تم تحديد هدف خدمة التجمع المرن. هدف خدمة حمام السباحة المرن لا يحدد بشكل فريد تجمع مرن. حدد اسم التجمع المرن إذا كنت تستخدم هدف خدمة البركة المرنة.
40864 ⁧⁩16⁧⁩ يجب أن تكون DTU للمجمع المرن على الأقل (%d) DTU لطبقة الخدمة '%. * ls'. محاولة ضبط DTU للتجمع المرن تحت الحد الأدنى. أعد محاولة ضبط DTU للتجمع المرن إلى الحد الأدنى على الأقل.
40865 ⁧⁩16⁧⁩ لا يمكن أن تتجاوز DTU للمجمع المرن (%d) DTU لطبقة الخدمة '%. * ls'. محاولة ضبط DTU للتجمع المرن فوق الحد الأقصى. أعد محاولة ضبط DTU للتجمع المرن بحيث لا يزيد عن الحد الأقصى.
40867 ⁧⁩16⁧⁩ يجب أن يكون الحد الأقصى لـ DTU لكل قاعدة بيانات (%d) على الأقل لطبقة الخدمة '%. * ls'. محاولة تعيين الحد الأقصى لـ DTU لكل قاعدة بيانات أقل من الحد المعتمد. ضع في اعتبارك استخدام طبقة خدمة البركة المرنة التي تدعم الإعداد المطلوب.
40868 ⁧⁩16⁧⁩ لا يمكن أن يتجاوز الحد الأقصى لـ DTU لكل قاعدة بيانات (%d) لطبقة الخدمة '%. * ls'. محاولة تعيين الحد الأقصى لـ DTU لكل قاعدة بيانات يتجاوز الحد المدعوم. ضع في اعتبارك استخدام طبقة خدمة البركة المرنة التي تدعم الإعداد المطلوب.
40870 ⁧⁩16⁧⁩ لا يمكن أن يتجاوز الحد الأدنى من DTU لكل قاعدة بيانات (%d) لطبقة الخدمة '%. * ls'. محاولة تعيين الحد الأدنى من DTU لكل قاعدة بيانات يتجاوز الحد المدعوم. ضع في اعتبارك استخدام طبقة خدمة البركة المرنة التي تدعم الإعداد المطلوب.
40873 ⁧⁩16⁧⁩ لا يمكن أن يتجاوز عدد قواعد البيانات (%d) ودقيقة DTU لكل قاعدة بيانات (%d) وحدات DTU للتجمع المرن (%d). محاولة تحديد الحد الأدنى DTU لقواعد البيانات في التجمع المرن الذي يتجاوز DTU للمجمع المرن. ضع في اعتبارك زيادة DTUs للتجمع المرن، أو تقليل الحد الأدنى DTU لكل قاعدة بيانات، أو تقليل عدد قواعد البيانات في التجمع المرن.
40877 ⁧⁩16⁧⁩ لا يمكن حذف التجمع المرن إلا إذا كان لا يحتوي على أي قواعد بيانات. يحتوي التجمع المرن على قاعدة بيانات واحدة أو أكثر وبالتالي لا يمكن حذفها. قم بإزالة قواعد البيانات من التجمع المرن لحذفها.
40881 ⁧⁩16⁧⁩ وصل التجمع المرن '%. * ls' إلى حد عدد قاعدة البيانات الخاص به. لا يمكن أن يتجاوز حد عدد قاعدة البيانات للتجمع المرن (%d) لتجمع مرن مع (%d) وحدات DTU. محاولة إنشاء أو إضافة قاعدة بيانات إلى التجمع المرن عند الوصول إلى حد عدد قاعدة البيانات الخاص بالتجمع المرن. ضع في اعتبارك زيادة DTU للمجمع المرن إن أمكن من أجل زيادة حد قاعدة البيانات أو إزالة قواعد البيانات من التجمع المرن.
40889 ⁧⁩16⁧⁩ لا يمكن إنقاص DTUs أو حد التخزين للتجمع المرن '%. * ls' لأن ذلك لن يوفر مساحة تخزين كافية لقواعد البيانات الخاصة به. محاولة تقليل حد التخزين للتجمع المرن إلى ما دون استخدام التخزين. ضع في اعتبارك تقليل استخدام التخزين لقواعد البيانات الفردية في التجمع المرن أو إزالة قواعد البيانات من التجمع لتقليل DTUs أو حد التخزين.
40891 ⁧⁩16⁧⁩ لا يمكن أن يتجاوز الحد الأدنى لـ DTU لكل قاعدة بيانات (%d) الحد الأقصى لـ DTU لكل قاعدة بيانات (%d). محاولة تعيين الحد الأدنى من DTU لكل قاعدة بيانات أعلى من الحد الأقصى لـ DTU لكل قاعدة بيانات. تأكد من أن الحد الأدنى من DTU لكل قواعد بيانات لا يتجاوز الحد الأقصى لـ DTU لكل قاعدة بيانات.
TBD ⁧⁩16⁧⁩ لا يمكن أن يتجاوز حجم التخزين لقاعدة بيانات فردية في تجمع مرن الحد الأقصى للحجم المسموح به من قبل '%. * ls' طبقة الخدمة المرنة. يتجاوز الحجم الأقصى لقاعدة البيانات الحد الأقصى للحجم الذي تسمح به طبقة خدمة التجمع المرن. قم بتعيين الحجم الأقصى لقاعدة البيانات ضمن حدود الحجم الأقصى المسموح به بواسطة طبقة خدمة التجمع المرن.

لا يمكن فتح قاعدة البيانات "الرئيسية" التي طلبها تسجيل الدخول. فشل تسجيل الدخول

تحدث هذه المشكلة لأن الحساب ليس لديه إذن للوصول إلى قاعدة البيانات master. ولكن بشكل افتراضي، يحاول SQL Server Management Studio (SSMS) الاتصال بقاعدة البيانات master.

لحل هذه المشكلة، اتبع الخطوات التالية:

  1. في شاشة تسجيل الدخول إلى SSMS، حدد خيارات ، ثم حدد خصائص الاتصال .

  2. في حقل الاتصال بقاعدة البيانات ، أدخل اسم قاعدة البيانات الافتراضي للمستخدم كقاعدة بيانات تسجيل الدخول الافتراضية، ثم حدد اتصال .

    Connection properties

أخطاء للقراءة فقط

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

خطأ 3906: فشل تحديث قاعدة البيانات "DatabaseName" لأن قاعدة البيانات للقراءة فقط.

عند محاولة تعديل قاعدة بيانات للقراءة فقط، سيظهر الخطأ التالي.

Msg 3906, Level 16, State 2, Line 1
Failed to update database "%d" because the database is read-only.

قد تكون متصلاً بنسخة متماثلة للقراءة فقط

بالنسبة لكل من Azure SQL Database وAzure SQL Managed Instance قد تكون متصلاً بقاعدة بيانات في نسخة متماثلة للقراءة فقط. في هذه الحالة، فإن الاستعلام التالي باستخدام الدالة DATABASEPROPERTYEX () سيؤدي إلى إرجاع READ_ONLY:

SELECT DATABASEPROPERTYEX(DB_NAME(), 'Updateability');
GO

إذا كنت تتصل باستخدام SQL Server Management Studio، فتحقق مما إذا كنت قد حددت ApplicationIntent=ReadOnly في علامة التبويب Additional Connection Parametersفي خيارات الاتصال.

إذا كان الاتصال من تطبيق أو عميل يستخدم سلسلة اتصال، فتحقق مما إذا كانت سلسلة الاتصال قد حددت ApplicationIntent=ReadOnly. تعرف على المزيد في الاتصال بنسخة متماثلة للقراءة فقط.

قد يتم تعيين قاعدة البيانات للقراءة فقط

إذا كنت تستخدم Azure SQL Database، فربما تم تعيين قاعدة البيانات نفسها للقراءة فقط. يمكنك التحقق من حالة قاعدة البيانات بالاستعلام التالي:

SELECT name, is_read_only
FROM sys.databases
WHERE database_id = DB_ID();

يمكنك تعديل حالة القراءة فقط لقاعدة بيانات في Azure SQL Database باستخدام ALTER DATABASE Transact-SQL. لا يمكنك حالياً تعيين قاعدة بيانات في مثيل مُدار للقراءة فقط.

تأكد مما إذا كان الخطأ ناتجاً عن مشكلة في الاتصال

لتأكيد ما إذا كان الخطأ ناتجاً عن مشكلة في الاتصال، قم بمراجعة تتبع المكدس للإطارات التي تعرض استدعاءات لفتح اتصال مثل تلك التالية (لاحظ المرجع إلى فئة SqlConnection ):

System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
 at System.Data.SqlClient.SqlConnection.Open()
 at AzureConnectionTest.Program.Main(String[] args)
ClientConnectionId:<Client connection ID>

عندما يتم تشغيل الاستثناء بسبب مشكلات الاستعلام، ستلاحظ وجود مكدس استدعاء مشابه لما يلي (لاحظ الإشارة إلى فئة SqlCommand ). في هذه الحالة، اضبط استعلاماتك .

  at System.Data.SqlClient.SqlCommand.ExecuteReader()
  at AzureConnectionTest.Program.Main(String[] args)
  ClientConnectionId:<Client ID>

للحصول على إرشادات إضافية حول ضبط الأداء، راجع الموارد التالية:

خطوات لإصلاح مشاكل الاتصال الشائعة

  1. تأكد من تمكين TCP / IP كبروتوكول عميل على خادم التطبيق. لمزيد من المعلومات، راجع ⁦⁩تكوين بروتوكولات العميل⁦⁩. على خوادم التطبيقات حيث لم يتم تثبيت أدوات SQL، تحقق من تمكين TCP / IP عن طريق تشغيل cliconfg.exe (الأداة المساعدة لشبكة عميل SQL Server).

  2. تحقق من سلسلة اتصال التطبيق للتأكد من تهيئتها بشكل صحيح. على سبيل المثال، تأكد من أن سلسلة الاتصال تحدد المنفذ الصحيح (1433) واسم الخادم المؤهل بالكامل. راجع الحصول على معلومات الاتصال .

  3. حاول زيادة قيمة مهلة الاتصال. نوصي باستخدام مهلة اتصال لا تقل عن 30 ثانية.

  4. اختبر الاتصال بين خادم التطبيق وقاعدة بيانات Azure SQL باستخدام SQL Server Management Studio (SSMS) أو ملف UDL أو ping أو telnet. لمزيد من المعلومات، راجع استكشاف مشكلات الاتصال وإصلاحها وتشخيص مشكلات الاتصال.

    ملاحظة

    كخطوة لاستكشاف الأخطاء وإصلاحها، يمكنك أيضاً اختبار الاتصال على كمبيوتر عميل مختلف.

  5. كأفضل ممارسة، تأكد من أن منطق إعادة المحاولة في مكانه. لمزيد من المعلومات حول منطق إعادة المحاولة، راجع استكشاف الأخطاء العابرة وأخطاء الاتصال بقاعدة بيانات SQL وإصلاحها .

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

لمزيد من المعلومات حول كيفية تمكين التسجيل، راجع تمكين تسجيل بيانات التشخيص للتطبيقات في Azure App Service .

الخطوات التالية

تعرف على المزيد عن الموضوعات ذات الصلة في المقالات التالية: