View Full Version : حرفه ای: تفاوت زمان اجرای Store Procedure
masoode
یک شنبه 29 مهر 1403, 18:32 عصر
سلام دوستان
یک استور پروسیجر دارم در SQL SERVER.
هر دو دقیقه یک بار آن را در یک ویندوز سرویس اجرا میکنم. (از FireDac استفاده میکنم)
قبلا مشکلی نداشتم اما ناگهان از دیروز! دیدم زمان اجرای پروسیجر از حدود یک ثانیه به حدود 60 ثانیه! رسیده!
من در خود استور پروسیجر زمان را لاگ میگیرم و نه در ویندوز سرویس.
برای تست در SSMS پروسیجر را اجرا کردم. هم در کامپیوتر خودم و هم در سرور حدود یک ثانیه شد!
سرویس را ری استارت کردم، باز هم درست نشد!
البته سرور را فعلا نمیتوانم ری استارت کنم
به نظر شما با توجه به اینکه لاگ زمان در خود استور پروسیجر است مشکل از کجا میتواند باشد؟
156243
156244
یوسف زالی
دوشنبه 30 مهر 1403, 11:07 صبح
سلام خب چه ارتباطی به دلفی داره؟ تالار اس کیو ال بپرسید
masoode
دوشنبه 30 مهر 1403, 12:25 عصر
سلام خب چه ارتباطی به دلفی داره؟ تالار اس کیو ال بپرسید
توی SQL و SSMS مشکلی نداره! وقتی پروسیجر توی برنامه ویندوز سرویسی که در دلفی نوشته ام اجرا میشه، کند میشه!
یوسف زالی
دوشنبه 30 مهر 1403, 13:31 عصر
معمولا وقتی چیزی رو از اس کیو ال ریترن می کنید، در پارامتری به نام Return_Value@ کوئری داریدش و نیازی نیست دوباره سلکتش کنید، و به همین دلیل جای Open فقط اون رو Execute کنید
masoode
دوشنبه 30 مهر 1403, 14:44 عصر
معمولا وقتی چیزی رو از اس کیو ال ریترن می کنید، در پارامتری به نام Return_Value@ کوئری داریدش و نیازی نیست دوباره سلکتش کنید، و به همین دلیل جای Open فقط اون رو Execute کنید
عکس اول (زمینه سفید) تمپلیت خود SQL server Management Studio است.
عکس دوم مربوط به دلفی است که این کامنت شما بهش وارد نیست!
یوسف زالی
دوشنبه 30 مهر 1403, 15:01 عصر
الان JobID همون RC@ نیست؟
یوسف زالی
دوشنبه 30 مهر 1403, 15:02 عصر
و یک سوال دیگه، تریس که می کنید دقیقا خط مربوط به اوپن طول می کشه؟
masoode
دوشنبه 30 مهر 1403, 15:16 عصر
الان JobID همون RC@ نیست؟
پروسیجر INSERT_LANTEK در واقع در یک دیتابیس دیگر دنبال یک رکورد جدید میگردد و در صورتی که رکورد جدید وجود داشت، آی دی آن، در غیر این صورت مقدار صفر را بر میگرداند
masoode
دوشنبه 30 مهر 1403, 15:18 عصر
و یک سوال دیگه، تریس که می کنید دقیقا خط مربوط به اوپن طول می کشه؟
بلی
البته چون برنامه به صورت سرویس است و تریس آن مشکل است، با لاگ گرفتن زمان طی شده آن را متوجه میشوم
masoode
دوشنبه 30 مهر 1403, 15:25 عصر
با این کد که داخل پروسیجر است لاگ میگیرم. WriteLog پروسیجر دیگری است برای لاگ گرفتن.
SET @ElapseFirst=SYSDATETIME()
-- کد های اصلی
SET @LogText=N'TEST LastDate Time='+CAST(DATEDIFF(MILLISECOND,@ElapseFirst,SYSD ATETIME()) as nvarchar)
EXECUTE dbo.WriteLog @Description=@LogText
یوسف زالی
دوشنبه 30 مهر 1403, 15:49 عصر
به این دلیل پرسیدم که به اتصال به دیتابیس مشکوک هستم نه ران شدن کوئری
ممکنه اتصال طول بکشه نه ران کردنش
masoode
دوشنبه 30 مهر 1403, 15:50 عصر
ران شدنش طول میکشه
masoode
یک شنبه 06 آبان 1403, 11:24 صبح
فعلا خود به خود خوب شد! البته متاسفانه نفهمیدم مشکل از چه چیزی بود!
سرور هم هنوز ری استارت نشده!
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.