בעיה במעבר מSQL 2000 ל 2005 EXP

ברק קרב

New member
בעיה במעבר מSQL 2000 ל 2005 EXP

לאחר העברת אתר מSQL2000 (גירסא מלאה) ל SQL EXPRESS 2005 התחלתי לקבל המון הודעות שגיאה כאלו: Microsoft OLE DB Provider for ODBC Drivers error '80004005' [Microsoft][ODBC SQL Server Driver][SQL Server]Transaction (Process ID 52) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction אני מבין שזה קשור לנעילות של שורות שעליהן יש update, אבל אני חייב להשאיר את השורות של הupdate כמו שהן, הן מבצעות פעילויות חשובות מכדי שאוכל לוותר עליהן. האם יש דרך לסדר את הSQL EXPRESS כך שיעבוד עם זה טוב כמו שהSQL 2000 עבד עם זה? מה ההבדל ביניהם בנושא? (אני שואל בפורום הזה כיוון שכאן שוכנעתי שאין בעיה לבצע מעבר, והאקספרס בכלל לא מגביל ...)
 

EdotK

New member
לא קשור לSQL Express

אם אתה מגיע למצב של Deadlock, זה לא בגלל "שורות של Update" אלא בגלל גישה מאוד לא נכונה לSQL. או שאתה פותח חיבורים ולא סוגר, או שאתה מבצע פעולות אחרות מאוד לא נכון (המון update-ים שמתבצעות בו זמנית על אותם טבלאות ממקורות שונים), JOB-ים מאוד לא יעילים שרצים במשך שעות, או דברים מהסוג הזה. הצלחתי רק פעם אחת ממש ליצור Deadlockים במערכת, וזה היה במערכת שבנויה כל כך לא טוב, עם כל כך הרבה עדכונים ושינויים על המערכת המקורית, וגם אז זה היה במערכת ענקית עם 50,000 update-ים ליום, כשבשעות הלחץ היא היתה יכולה להגיע גם ל10,000 update-ים לתוך טבלה אחת, תוך כדי שמתבצעים גם כזו כמות של select-ים מאוד מורכבים מהטבלה הנ"ל.
 

ברק קרב

New member
זה פחות או יותר מה שיש לי

ובמקור לא אני בניתי את המערכת, וכל שינוי נורא מסורבל. (למצוא למה קשור כל דבר וכו') אותה המערכת בדיוק עם SQL 2000 מלא עובדת ללא דדלוק אחד אפילו, אולי יש מגבלה של אפדייטים בבת אחת באקספרס? או שיש משהו שניתן להגדיר בשרת SQL EXPRESS עצמו שמסדר את זה? אצלי האפדייט הוא לא רק לאותה טבלא, אלא אפילו לאותה הרשומה. (זה סוג של קאונטר כזה, שפועל על כמה חלקים בבת אחת). אשמח לכל עזרה שהיא, ואם ניתן לפתור אותה ברמת ה SQL ולא במערכת.
 

EdotK

New member
אם אתה עובד במערכת

עם כאלו סדרי גודל - אז מהר מהר תתקין גרסה רגילה. express אכן לא בנוי לזה.
 

ברק קרב

New member
אני כרגע ברגילה, רציתי לעבור לאקספר

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

EdotK

New member
כפי שראית בדיונים האחרונים בפורום

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

IdleThought

New member
נראה לך שאם

הוא היה מחליף את המתאם ל SQLCLIENT ומבצע את הטרנזקציות במסגרת שגרות מאוחסנות ולא בצורה של קוד זה היה עובד גם עם גרסת האקספרס בנפחים כאלה? (אני שואל כי אני רוצה לבנות אפליקציה עם שימוש ב DB בסדר גודל כזה ואני מתלבט בין 2005 אקספרס ל MYSQL)
 

EdotK

New member
כאמור, לא יצא לי לעבוד עם האקספרס

אבל ההבדל בין sqlClient לodbcClient הוא ביעילות, לא יותר (ברק - למה לכל הרוחות אתה לא משתמש במתאם הנכון?!). כנ"ל לגבי StoredProcedures, ההבדל בין זה לבין SQL דינאמי הוא רק ביעילות (וגם זה בספק.. שמעתי לא פעם על טענות על כך שStoredProcedures לא יותר מהירות מאז גרסת 2000). הבעיה עם האפליקציה שלו היא שהיא בנויה לא טוב. (אני מניח כמובן.. לא יכול לדעת בלי להסתכל עליה - אבל ככה זה נשמע) ובדברים כאלו הגרסה הרגילה פשוט יכולה לעמוד בעומסים גבוהים יותר. ז"א, אם יש לך 10 טרנסאקציות שרצות בו זנמית וכולן מנסות לעדכן את אותם טבלאות, אז ברור שהעומס לא פשוט - ולזה ספציפית גרסת האקספרס פשוט לא בנויה. גם אם תכתוב את זה יותר יעיל זה לא יפתור את הבעיה. That being said, אני די משוכנע שרוב המערכות שמגיעות לכאלו עומסים פשוט בדר"כ בנויות לא נכון. אם אתה מתכנן מערכת חדשה - אזי אם תבנה אותה נכון אתה אמור להמנע מרוב הבעיות האלו. ראיתי בעשרות מקרים שמנסים להשקיע בשרתים יותר חזקים, כשבפועל לדעת SQL טוב מוריד את העומסים פי מאה יותר. במערכת שהזכרתי מקודם היה שימוש ב Cursors על ימין ועל שמאל ו90% מהם היו מיותרים לחלוטין. (אם רק המכנת המקורי היה יודע SQL יותר לעמוק מלכתחילה 95% מהעומסים לא היו נגרמים מלכתחילה. בכל מקרה - לך זה לא משנה. תתחיל לעבוד עם SQL Express, ותנסה לכתוב את המערכת הכי טוב שאפשר. במידה ותראה שיש בעיה עם העומסים על שרת הנתונים - פשוט תחליף לSQL2000. (או בכלל 2005). המעבר חלק לגמרי.
 

IdleThought

New member
*ההוא שלא אומרים את שמו

כל זיקה ללורד וולדמורת' הינה מקרית בהחלט ! (ג.ק. רולינג)
 

IdleThought

New member
חשבתי

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

EdotK

New member
יכול להיות...

אף פעם לא הייתי מספיק (...) בשביל בכלל לנסות לעבוד עם המתאם הלא נכון
 

ברק קרב

New member
לגבי מתאם

אני עובד עם DSN, לא משנה אם אני משתמש דרך ה ODBC ב sql native client או sql server - נותן את אותה התוצאה.
 
למעלה