דלג לתוכן הראשי
היכנס דרך Microsoft
היכנס או צור חשבון.
שלום,
בחר חשבון אחר.
יש לך חשבונות מרובים
בחר את החשבון שברצונך להיכנס באמצעותו.

תופעות

נניח שאתה יוצר קבוצת זמינות על-ידי שימוש בפסוקית WITH DTC_SUPPORT = PER_DB ב- Microsoft SQL Server. בעת ניסיון לבצע משפט SAVE TRANSACTION בטרנזקציה או פרוצדורות מאוחסנות במערכת כגון sp_executesql, אתה מקבל אחת מהודעות השגיאה הבאות:

Msg 627, רמה 16, מצב 0, מספר שורה
אין אפשרות להשתמש ב- SAVE TRANSACTION בתוך טרנזקציה מבוזרת.
Msg 12324, רמה 16, מצב 100, מספר שורה
טרנזקציות מבוזרות (DTC) אינן נתמכות עם טבלאות ממוטבות של זיכרון.
שגיאה: 3933, חומרה: 16, מצב: 1.
אין אפשרות לקדם את הטרנזקציה לטרנזקציה מבוזרת מאחר שקיים נקודת שמירה פעילה בטרנזקציה זו.

סיבה

כאשר מסד נתונים בקבוצה זמינות מופעלת עבור WITH DTC_SUPPORT = PER_DB, כל עוד טרנזקציה כוללת מסדי נתונים מרובים, הטרנזקציה מקודמת לטרנזקציית MSDTC ב- SQL Server 2016 SP2 וב- SQL Server 2017. קיימות מגבלות בטרנזקציות MSDTC, לדוגמה, לא ניתן להשתמש בנקודות שמירה, לא ניתן להשתמש בטבלאות ממוטבות לזיכרון.

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

פתרון

התיקון שהוצג ב- KB זה מדלג על קידום לטרנזקציית MSDTC אם מסד נתונים של משאבי מערכת ומסד נתונים של משתמשים המהווים חלק מקבוצת זמינות הזמינים עבור PER_DB DTC מעורבים בטרנזקציה חוצת מסדי נתונים באותו מופע SQL Server.

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

  • מסד נתונים מהווה חלק מקבוצת זמינות תמיד מופעלת עם DTC_SUPPORT = PER_DB.

  • טרנזקציה בין מסדי נתונים כרוכה במסד נתונים זה ובמסד הנתונים של משאבי המערכת באותו SQL Server אחר.

  • בתוך טרנזקציית מסד הנתונים המקושר, נעשה שימוש ב- SAVE TRANSACTION או שטבלאות ממוטבות לזיכרון מעורבות.

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

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

בעיה זו נפתרה בעדכון המצטבר הבא עבור SQL Server:

כל עדכון מצטבר חדש עבור SQL Server מכיל את כל התיקונים החמים ואת כל תיקוני האבטחה שנכללו בעדכון המצטבר הקודם. עיין בעדכונים המצטברים האחרונים עבור SQL Server:

מידע נוסף

מידע נוסף על DTC_SUPPORT = PER_DB, טבלאות ממוטבות לזיכרון, SAVE TRANSACTION ניתן למצוא בקישורים הבאים.

טרנזקציות מסד נתונים באותו מופע SQL Server לקשר
חלק זה https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/transactions-always-on-availability-and-database-mirroring?view=sql-server-2017#sql-server-2016-sp1-and-before-support-for-cross-database-transactions-within-the-same-sql-server-instanceטבלאות ממוטבות לזיכרון לקשר חלק זה אל
https://learn.microsoft.com/en-us/sql/relational-databases/in-memory-oltp/transactions-with-memory-optimized-tables?view=sql-server-2017#limitationsקישור טרנזקציה לחלק זה https://learn.microsoft.com/en-us/sql/t-sql/language-elements/save-transaction-transact-sql?view=sql-server-2017#remarks

https://learn.microsoft.com/en-us/sql/database-engine/availability-groups/windows/configure-replication-for-always-on-availability-groups-sql-server?view=sql-server-2017#step2

מצב

Microsoft אישרה כי זוהי בעיה במוצרי Microsoft המפורטים בסעיף "חל על".

הפניות

למד על המינוח שבו Microsoft משתמשת לתיאור עדכוני תוכנה.

זקוק לעזרה נוספת?

מעוניין באפשרויות נוספות?

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

קהילות עוזרות לך לשאול שאלות ולהשיב עליהן, לתת משוב ולשמוע ממומחים בעלי ידע עשיר.

האם מידע זה היה שימושי?

עד כמה אתם מרוצים מאיכות השפה?
מה השפיע על החוויה שלך?
בלחיצה על 'שלח', אתה מאפשר למשוב שלך לשפר מוצרים ושירותים של Microsoft. מנהל ה-IT שלך יוכל לאסוף נתונים אלה. הצהרת הפרטיות.

תודה על המשוב!

×