كائن SQLCommand - قم بتعيينه ونسىه؟
-
10-07-2019 - |
سؤال
أنا أستخدم كائن 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.
يمكنك تشغيل هذا الرمز من موضوع الخلفية. يمكنك النظر في عمال الخلفية هدف.