خطأ في جزء الويب المخصص الخاص بي:تم حظر العملية التي تمت محاولتها لأنها تتجاوز حد عرض القائمة الذي يفرضه المسؤول

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/105553

  •  29-09-2020
  •  | 
  •  

سؤال

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

protected void ddProcesses_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnAddFunction.Visible = true;

//            alApparaten.Visible = false;

            ReloadFunctions();

            ((ApparaatList)alApparaten).FuncID = 0;
            ((ApparaatList)alApparaten).Reload();
        }


public void Reload()
        {
            using (AssetRegisterDataContext spContext = new AssetRegisterDataContext(SPContext.Current.Site.Url))
            {
                var apparaten = from i in spContext.Apparaat.ToList()
                                where i.Functie_ID != null && i.Functie_ID.Id == FuncID
                                select i;
                rptApparaten.DataSource = (from i in apparaten where i.Verwijderd != true select i);
                rptApparaten.DataBind();
            }

        }


    private void ReloadFunctions()
            {
                using (AssetRegisterDataContext spContext = new AssetRegisterDataContext(SPContext.Current.Site.Url))
                {
                    var query = (from i in spContext.Functies.ToList()
                                 where (i.Locatie != null && i.Locatie.LocatieNaamCode == ddLocations.SelectedValue)
                                    && (i.Faciliteitnaam != null && i.Faciliteitnaam.Faciliteitnaam == ddFacilities.SelectedValue)
                                    && (i.Procesnaam != null && i.Procesnaam.Procesnaam == ddProcesses.SelectedValue)
                                    && (i.Verwijderd != true)
                                 select i
                                 );
                    rptFunctions.DataSource = query;
                    rptFunctions.DataBind();
                }
            }

عندما أذهب إلى قائمة "Apparaat" أرى أن هناك 5002 عنصرًا.عندما وصلت إلى إعدادات القائمة أرى هذه المعلومات:

5002 عنصرًا (الحد الأقصى لعرض القائمة هذا هو 5000).

عندما حصلت على قائمة "Apparaat" كل شيء على ما يرام.أحاول إضافة عنصرين ويعمل بشكل جيد.

لماذا يمنحني جزء الويب المخصص الخاص بي حد الحد الأقصى وتعمل واجهة المستخدم الرسومية بشكل جيد؟

هل كانت مفيدة؟

المحلول

وجدت الحل بنفسي.لقد أنشأت whilleop.إنها حلقات في هذه الحلقة حتى يتم الوصول إلى عدد العناصر الإجمالية.داخل الحلقة وأخذ أول عنصر 1999 وأضفها إلى قائمة.بعد هذا أستغرق العناصر الثانية لعام 1999.سيفعل هذا المنطق حتى وصلت إلى إجمالي عدد العناصر.بعد ذلك، لديك قائمة بكل العناصر ويمكن أن تضيفها إلى مكرر.السبب في أنني استخدمت العناصر 1999 هي أنه من الممكن أن يكون الخانق يمكن أن ينخفض من 5000 إلى 2000. سيعمل الرمز المخصص أيضا.

نصائح أخرى

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

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

LinQ لاستعلامات SharePoint لها حد صف افتراضي للأقصى والحد الأقصى الذي يبلغ 2147483647 ويبدو أنه لا يمكن تغييره.من المحتمل أن يعود استفسارك أكثر من 5000 عنصر وتتجاوز العتبات.

للتأكد من أنك لا تتجاوز العتبة، يجب عليك استخدام كائن SPQUERY واكتب استفسارك في CAML وتعيين خاصية ROWLIMIT إلى 5000. ستحتاج إلى شيء من هذا القبيل.تغيير استعلام CAML.

giveacodicetagpre.

وهذا يفسر ما يجري:

يتم حظر عملية المحاولة لأنها تتجاوز عتبة عرض القائمة التي يفرضها المسؤول

تم تعيينه بواسطة المشرف في قائمة من الإدارة المركزية على تطبيق الويب!

هل يمكنك الذهاب المشرف المركزي -> إدارة التطبيق -> إدارة تطبيقات الويب -> يختار ال تطبيق الويب التي تحتوي على القائمة المحددة -> ضمن علامة التبويب أعلاه، انقر على اسقاط ل الاعدادات العامة -> حدد خنق الموارد.

من المفترض أن يمنحك هذا مربعًا منبثقًا يحتوي على إعدادات تطبيق الويب التي تم تعيينها بواسطة المسؤول.إذا قمت بالتمرير لأسفل سترى عتبة البحث في عرض القائمة ، افتراضيًا أعتقد أنه تم ضبطه على 5000، ويمكنك زيادة هذا الرقم إلى شيء أكبر.

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

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

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

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

http://office2010.microsoft.com/en-us/sharepoint-server-help/manage-lists-and-libraries-with-many-items-HA010378155.aspx?redir=0

هذا هو السلوك المتوقع - SharePoint يحتوي على ميزة تسمى "استفسار الاختناق"، والتي تم تصميمها لمنع استفسارات القائمة غير الفعالة من التأثير سلبا على الأداء للمستخدمين.

تم تعيين هذا الحد إلى 5000، وربما يجب تغيير هذا . السبب في تعيينه على 5000 هو أنه في أكثر من 5000 عنصر، تصاعد قاعدة بيانات SQL الأساسية من قفل الصف إلى قفل الجدول. نظرا لأن SharePoint يخزن الكثير من المحتوى في جدول واحد في قاعدة بيانات المحتوى، فقد يكون لهذا تأثير كبير على أداء نظامك، وهذا يمكن أن يؤثر على العديد من مجموعات المواقع.

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

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

استرجاع العناصر One-A-A-Time:

giveacodicetagpre.

استرجاع العناصر في دفعات:

giveacodicetagpre.

قد يساعد هذا: http://www.novolocus.com/2012/07/09/dealing-with-large-lists-part-1- what-s-shrottling-and-how - الأسباب - صعوبة /

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