سؤال

لدي عبارة SQL طويلة التشغيل وأريد تشغيلها، وبغض النظر عما أضعه في عبارة "timeout=" في سلسلة الاتصال الخاصة بي، يبدو دائمًا أنها تنتهي بعد 30 ثانية.

أنا فقط أستخدم SqlHelper.ExecuteNonQuery() لتنفيذه، وتركه يعتني بفتح الاتصالات، وما إلى ذلك.

هل هناك شيء آخر يمكن أن يتجاوز المهلة الخاصة بي، أو يتسبب في تجاهل خادم SQL لها؟لقد قمت بتشغيل ملف التعريف على الاستعلام، ولا يبدو التتبع مختلفًا عندما أقوم بتشغيله في استوديو الإدارة، مقارنةً بالكود الخاص بي.

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

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

المحلول

ما الذي تستخدمه لتعيين المهلة في سلسلة الاتصال الخاصة بك؟من الذاكرة يكون "ConnectionTimeout" ويؤثر فقط على الوقت المستغرق فعليًا يتصل إلى الخادم.

يحتوي كل أمر فردي على "CommandTimeout" منفصل وهو ما تبحث عنه.لست متأكدًا من كيفية تنفيذ SqlHelper لذلك بالرغم من ذلك.

نصائح أخرى

بالإضافة إلى المهلة في سلسلة الاتصال، حاول استخدام خاصية المهلة لأمر SQL.يوجد أدناه نموذج C#، باستخدام فئة SqlCommand.يجب أن ينطبق ما يعادله على ما تستخدمه.

SqlCommand command = new SqlCommand(sqlQuery, _Database.Connection);
command.CommandTimeout = 0;
int rows = command.ExecuteNonQuery();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top