דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. אקסס - עבודה נקייה מול SQL SERVER

אקסס - עבודה נקייה מול SQL SERVER

מתוזמן נעוץ נעול הועבר ארכיון code613m
2 פוסטים 1 כותבים 274 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • א מנותק
    א מנותק
    ארכיטקט
    כתב ב נערך לאחרונה על ידי
    #1

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

    פורסם במקור בפורום CODE613 ב01/07/2015 18:42 (+03:00)

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

    תגובה 1 תגובה אחרונה
    2
    • א מנותק
      א מנותק
      ארכיטקט
      כתב ב נערך לאחרונה על ידי
      #2

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

      SELECT
          SPID                = er.session_id
          ,STATUS             = ses.STATUS
          ,[Login]            = ses.login_name
          ,Host               = ses.host_name
          ,BlkBy              = er.blocking_session_id
          ,DBName             = DB_Name(er.database_id)
          ,CommandType        = er.command
          ,SQLStatement       = st.text
          ,ObjectName         = OBJECT_NAME(st.objectid)
          ,ElapsedMS          = er.total_elapsed_time
          ,CPUTime            = er.cpu_time
          ,IOReads            = er.logical_reads + er.reads
          ,IOWrites           = er.writes
          ,LastWaitType       = er.last_wait_type
          ,StartTime          = er.start_time
          ,Protocol           = con.net_transport
          ,ConnectionWrites   = con.num_writes
          ,ConnectionReads    = con.num_reads
          ,ClientAddress      = con.client_net_address
          ,Authentication     = con.auth_scheme
      FROM sys.dm_exec_requests er
      OUTER APPLY sys.dm_exec_sql_text(er.sql_handle) st
      LEFT JOIN sys.dm_exec_sessions ses
      ON ses.session_id = er.session_id
      LEFT JOIN sys.dm_exec_connections con
      ON con.session_id = ses.session_id
      where ses.status='running'
      

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

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

      כמו"כ אם הוא מכיל את הערך: LCK_M_IX (בשאילתת UPDATE) סימן שיש נעילות שמעכבות עדכונים, ובדרך כלל רשומות אחרות המכילות את הערך ASYNC_NETWORK_IO אשמות בכך.

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

      פורסם במקור בפורום CODE613 ב27/08/2015 00:08 (+03:00)

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

      תגובה 1 תגובה אחרונה
      3

      בא תתחבר לדף היומי!
      • התחברות

      • אין לך חשבון עדיין? הרשמה

      • התחברו או הירשמו כדי לחפש.
      • פוסט ראשון
        פוסט אחרון
      0
      • דף הבית
      • קטגוריות
      • פוסטים אחרונים
      • משתמשים
      • חיפוש
      • חוקי הפורום