سؤال

أنا أستخدم كائن sqlclient.sqlcommand لتشغيل عدد قليل من procs المخزنة على ديسيبل الخاص بي. عادةً عندما أقوم بتشغيل هذه المحلل يدويًا عبر محلل الاستعلام ، فإنها تستغرق ما يصل إلى 15 دقيقة لإكمالها.

من الواضح أنه عندما أقوم بتشغيلهم باستخدام كائن SQLCommand ، أحصل على مهلة SQLCommand.

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

أي اقتراحات؟ لست مهتمًا بتحسين وقت المعالجة لكل SP هنا ، فقط أحاول تحديد ما إذا كان هناك خيار "تعيينه ونسيانه".

إليك محتوى كائن SQLCommand:

using (SqlCommand cmd = new SqlCommand(@"update tbl_SYS_DATE set RPT_DATE = @inputDate
                                                    exec sp_Get_Bp_Data1
                                                    exec sp_Get_Bp_Data2          
                                                    exec sp_Get_Bp_Data3
                                                    exec sp_channel_data1
                                                    exec sp_channel_data2
                                                    exec sp_channel_data3
                                                    ", con))
هل كانت مفيدة؟

المحلول

يمكنك استخدام طريقة Async ، مثل BegineXecutenOnquery. يتم تجاهل المهلة لذلك.

نصائح أخرى

استخدم استدعاء الطريقة غير المتزامنة BegineXecutenOnquery. من صفحة MSDN

سيتم تجاهل خاصية CommandTimeOut خلال مكالمات الطريقة غير المتزامنة مثل BegineXecuteReader.

يمكنك تشغيل هذا الرمز من موضوع الخلفية. يمكنك النظر في عمال الخلفية هدف.

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