סקירה כללית #
לאחר עדכונים אחרונים ב- כלי mssql חבילה, משתמשים עשויים לחוות התנהגות בלתי צפויה בעת ביצוע שאילתות עם sqlcmdדוגמה לפקודה אופיינית:
/usr/local/relianoid/app/libexec/sqlcmd -S -יו -פ -Q "בחר ספירה(*) מתוך TABLE_0;"
במקרים מסוימים, שגיאות שאילתה אינן מוחזרות כראוי ככשלים בפקודות, דבר שיכול להשפיע על סקריפטים, אוטומציה או תהליכי ניטור (כגון בדיקות תקינות של farmguardian) בהסתמך על קודי יציאה.
לגרום #
בעיה זו נובעת מ- שינוי התנהגות ב- sqlcmd תועלת, כלול ב כלי mssql חֲבִילָה.
כברירת מחדל, sqlcmd:
- מוציא שגיאות SQL לפלט סטנדרטי (stdout)
- האם לא להחזיר קוד יציאה שאינו אפס כאשר שאילתה נכשלת
משמעות הדבר היא שגם אם שאילתת ה-SQL נתקלת בשגיאה, הפקודה עדיין עשויה להיראות מוצלחת מנקודת מבט של סקריפטים.
פתרון #
כדי להבטיח ששגיאות שאילתת SQL מטופלות כראוי ומוחזרות ככשלים בפקודות, יש לכלול את -b פרמטר ב sqlcmd פקודה.
פקודה מעודכנת:
/usr/local/relianoid/app/libexec/sqlcmd -b -S -יו -פ -Q "בחר ספירה(*) מתוך TABLE_0;"
איך זה עובד #
השמיים -b אפשרות משנה sqlcmd התנהגות כדלקמן:
- סיבות
sqlcmdל יציאה עם קוד סטטוס שאינו אפס אם מתרחשת שגיאה - שולח הודעות שגיאה אל שגיאת תקן (stderr) במקום פלט סטנדרטי
- מאפשר זיהוי שגיאות נכון בסקריפטים ובכלי אוטומציה
למה זה חשוב #
בלי ה -b style you
- ייתכן שמערכות ניטור לא יזהו שאילתות שנכשלו
- ייתכן שסקריפטים של אוטומציה ימשיכו לפעול למרות שגיאות
- פתרון בעיות הופך קשה יותר עקב מצבי הצלחה מטעים
על ידי הוספה -b, אתה מבטיח:
- טיפול מדויק בשגיאות
- התנהגות סקריפטים אמינה
- שילוב נכון עם ניטור והתראות של המערכת
הערות נוספות #
- התנהגות זו ספציפית ל-
sqlcmdכלי מה כלי mssql חבילה - יש לבדוק ולעדכן בהתאם את התסריטים הקיימים
- אין צורך בשינויים בצד של SQL Server
<br> סיכום #
שינוי ב sqlcmd התנהגות זו עלולה למנוע דיווח תקין של שגיאות SQL. הוספת -b הפרמטר מבטיח שכשלים בשאילתות מופצים כהלכה באמצעות קודי יציאה ופלט שגיאה, תוך שמירה על אוטומציה וניטור אמינים.