if statment for time

eladavraham

New member
if statment for time

שלום,
אשמח לקבל עזרה, כיצד ניתן לכתוב פקודה שתגביל את זמן הריצה ברמת השאילתה,
נניח כתבתי שליפה מטבלה אך עם זמן הריצה גבוה יותר מ נתון זמן שאגדיר המערכת תבצע משהו אחר.
אשמח לקבל עזרה
 

גרי רשף

New member
הייתי מנסה שתי אפשרויות

אם מדובר בלולאה - ניתן לבדוק בתוכה מה השעה, ואם עבר הזמן - לעצור.

ליצור Session נוסף ובו האופרטוק WaitFor שימתין לנקודת זמן מסויימת ואז יבצע Kill לראשון.
קצת ברוטאלי, אבל תלוי במה מדובר.
 

pitoach

New member
Aאלה יפה אמוד אבל הבסיס הוא להבין כיצד אתה

מתחבר לשרת

אפשר לשלוט על מה שאתה רוצה בקלות בשרשרת ההתחברות. השאלה כאמור כיצד אתה מתחבר לשרת. אם אתה עובד עם אפליקציות יותר גמישות ובטח אם אתה פיתחת לבד את האפליקציה אז אתה יכול לשלוט על זמן החיים של ההתחברות ועל זמן החיים של הפקודה (בנפרד, אלו 2 פרמטרים)

למשל אם בשרשרת ההתחברות רושמים
Connection Timeout=30
אז קבעת מייד שכל שאילתה תיפסק אחרי 30 שניות. זה לא אומר שהיא תשחרר משאבים מייד כמובן אלא שאחרי 30 שניות ההתחברות תאבד אם אין פעולה אחרת שגורמת לשמור את ההתחברות ושמרגע זה השרת ינסה לשחר משאבים ולבצע ROLL BACK
למשל
"Data Source=(local);Initial Catalog=AdventureWorks; Integrated Security=SSPI;Connection Timeout=30";
אפשר באותה צורה לעוד עם פרמטרים כך
connection.ConnectionTimeout

אם אתה רוצה אתה יכול לשלוט על זמן ההרצה המקסימלי של כל פקודה בעזרת
set comm=Server.CreateObject("ADODB.Command")
comm.CommandTimeout=10

כאמור השאלה הבסיסית כדי לעזור לך זה לדעת כיצד אתה ניגש לשרת. עם איזה אפליקציה אתה עובד?
 

flenger

New member
אם אתה מחפש פיתרון בקוד

אז זה משהו כזה
using (var con = new SqlConnection(connectingString))
{
con.Open();
using (var command = con.CreateCommand())
{
command.CommandType = CommandType.Text;
command.CommandText = "you select query";
command.CommandTimeout = 30;
}
con.Close();
}
כאשר הזמן הוא בשניות וברירת המחדל היא 30
מקווה שזה עוזר
 
למעלה