none
בעיה בהרצת ג'וב שיריץ SSIS PACKAGE RRS feed

  • שאלה

  • שלום,

    יצרתי SSIS PACKAGE די פשוט שממיר קובץ XML לקובץ TXT

    כשאני מריץ אותו מתוך ה VISUAL STUDIO הוא עובד בצורה תקינה.

    יצרתי ג'וב ב SSMS שיריץ את הPACKAGE הזה בכל כמה שניות.

    הג'וב בכל פעם נכשל. ניסיתי לפתור זאת המון זמן אך ללא הצלחה.

    השגיאה שאני מקבל היא:

    Executed as user: NT Service\SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utility  Version 13.0.4495.10 for 32-bit  Copyright (C) 2016 Microsoft. All rights reserved.    Started:  16:40:31  Package execution on IS Server failed. Execution ID: 80588, Execution Status:4.  To view the details for the execution, right-click on the Integration Services Catalog, and open the [All Executions] report  Started:  16:40:31  Finished: 16:40:39  Elapsed:  8.235 seconds.  The package execution failed.  The step failed.


    אשמח לעזרתכם.

    תודה רבה

    איתי

    יום רביעי 01 מאי 2019 14:06

תשובות

  • שלום,

    יצרתי SSIS PACKAGE די פשוט שממיר קובץ XML לקובץ TXT

    כשאני מריץ אותו מתוך ה VISUAL STUDIO הוא עובד בצורה תקינה.

    יצרתי ג'וב ב SSMS שיריץ את הPACKAGE הזה בכל כמה שניות.

    הג'וב בכל פעם נכשל. ניסיתי לפתור זאת המון זמן אך ללא הצלחה.

    השגיאה שאני מקבל היא:

    Executed as user: NT Service\SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utility  Version 13.0.4495.10 for 32-bit  Copyright (C) 2016 Microsoft. All rights reserved.    Started:  16:40:31  Package execution on IS Server failed. Execution ID: 80588, Execution Status:4.  To view the details for the execution, right-click on the Integration Services Catalog, and open the [All Executions] report  Started:  16:40:31  Finished: 16:40:39  Elapsed:  8.235 seconds.  The package execution failed.  The step failed.


    אשמח לעזרתכם.

    תודה רבה

    איתי

    ערב טוב איתי,

    המידע שאתה מביא לנו לא מספק די לבין מה מקור הבעיה.

    1. לא ספקת לנו שום כלים לשחזר את הבעיה על מנת שנוכל לחקור. את מדבר על קובץ XML אבל לא סיפקת דוגמה של קובץ שלא עובד טוב. אתה על חיבלת SSIS שהכנת אבל לא סיפקת לנו את החבילה

    2. אתה מקבל הודעת שגיאה, אבל האם קראת אותה?

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

    באופן כללי...

    כאשר אתה מריץ פעולה דרך Job אז המשתמש אשר מריץ את השאילתות הוא למעשה המשתמש אשר מריץ את שירות של ה Job בברירת המחדל. לעומת זאת כאשר אתה מריץ בצורה ישירה את ה SSIS אז המשתמש אשר הריץ את החבילה הוא זה שאיתו אתה מתחבר. הבעיה הנפוצה ביותר במצבים כאלה קשורה לכך. בעצם מדובר על משתמשים שונים והבעיה בדרך כלל קשורה להרשאות של השמתמש שמריץ את ה Job

    למעשה הכלל המדוייק לגבי מי מריץ את שירות ה Agent קובע שאם המשתמש שהוא הבעלים של הJOB הוא sysadmin אז מטעמי אבטחה ה JOB רץ תחת המשתמש של מערכת ההפעלה אשר מפעיל את השירות של ה JOB. אבל אם המשתמש הוא non-sysadmin אז זה המשתמש אשר יריץ את ה JOB ויש לתת לו הרשאות מתאימות.

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

    הערה: למשתמשים מסוג שירות כמו NT SERVICE יש מספר זיהוי ייחודי SID כמו משתמשים אמיתיים אבל מערכת ההפעלה "מודעת" לכך שזה לא משתמש אמיתי.

    * הערה: כל ההגדרות שאתה צריך בנושא זה ניתן לבצע בעזרת ה SQL Server Configuration Manager

    הפתרון הכי נפוץ לבעיה זו הוא כמו שמופיע בקישור שיובל הביא. מדובר בטעות נפוצה מאוד מבחינת אבטחה להגדיר את ה owner של ה Job כמשתמש שהוא sysadmin כמו למשל sa כאשר אתה נמצא במערכת production! עם זה כפי שתכתבי זה הפתרון הקל ביותר למימוש. כפי שכתבתי קודם, מכיוון ש sa הוא sysadmin אז כל מה שאתה מריץ ב ג'וב ירות תחת המשתמש היורטואלי מסוג NT Service ולמשתמש הזה אין הרשאות מחוץ לסקופ של השרת ולכן הרצת חבילות של SSIS בדרך כלל יכשלו.

    אז מה...

    פתרון 1: כמו שמופיע בקישור שסיפק יובל, אפשר להגידר Proxy ולהריץ את הג'וב דרך הפרוקסי.

    פתרון 2: לשנות את המשתמש אשר מפעיל את השירות של ה SQL Agent לכזה שמתאים להריץ את הג'ובים

    מה עכשיו בינתיים?

    1. אנא ספק את המידע החסר על מנת שנוכל לשחזר את הבעיה וכמובן את הודעת השגיאה ולא את ההודעה על כלך שיש הודעת שגיאה 

    2. ניסית להריץ את החבילה ישירות וזה עבד, ניסת הלריץ את החבילה דרך Job מתוזמן וזה לא עבד. אנא נסה להריץ את ה Job ישירות ובדוק מה קורה (אני מנחש שזה לא יעבוד אבל צריך לבדוק את הנושא)

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 02 מאי 2019 20:04
    מנחה דיון

כל התגובות

  • שלום רב,

    נסה לעבוד עם SSISProxy:

    https://social.technet.microsoft.com/Forums/sqlserver/en-US/52b3e3a9-13da-4c44-b4c6-bc0ea8b49409/sql-server-agent-failed-jobs-for-user-nt-servicesqlserveragent?forum=sqlintegrationservices

    בהצלחה


    Best Regards,

    Yuval Sinay

    Blog: http://blogs.microsoft.co.il/blogs/yuval14  LinkedIn:   

    Note: Posts are provided “AS IS” without warranty of any kind, either expressed or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.

    יום רביעי 01 מאי 2019 21:56
  • שלום,

    יצרתי SSIS PACKAGE די פשוט שממיר קובץ XML לקובץ TXT

    כשאני מריץ אותו מתוך ה VISUAL STUDIO הוא עובד בצורה תקינה.

    יצרתי ג'וב ב SSMS שיריץ את הPACKAGE הזה בכל כמה שניות.

    הג'וב בכל פעם נכשל. ניסיתי לפתור זאת המון זמן אך ללא הצלחה.

    השגיאה שאני מקבל היא:

    Executed as user: NT Service\SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utility  Version 13.0.4495.10 for 32-bit  Copyright (C) 2016 Microsoft. All rights reserved.    Started:  16:40:31  Package execution on IS Server failed. Execution ID: 80588, Execution Status:4.  To view the details for the execution, right-click on the Integration Services Catalog, and open the [All Executions] report  Started:  16:40:31  Finished: 16:40:39  Elapsed:  8.235 seconds.  The package execution failed.  The step failed.


    אשמח לעזרתכם.

    תודה רבה

    איתי

    ערב טוב איתי,

    המידע שאתה מביא לנו לא מספק די לבין מה מקור הבעיה.

    1. לא ספקת לנו שום כלים לשחזר את הבעיה על מנת שנוכל לחקור. את מדבר על קובץ XML אבל לא סיפקת דוגמה של קובץ שלא עובד טוב. אתה על חיבלת SSIS שהכנת אבל לא סיפקת לנו את החבילה

    2. אתה מקבל הודעת שגיאה, אבל האם קראת אותה?

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

    באופן כללי...

    כאשר אתה מריץ פעולה דרך Job אז המשתמש אשר מריץ את השאילתות הוא למעשה המשתמש אשר מריץ את שירות של ה Job בברירת המחדל. לעומת זאת כאשר אתה מריץ בצורה ישירה את ה SSIS אז המשתמש אשר הריץ את החבילה הוא זה שאיתו אתה מתחבר. הבעיה הנפוצה ביותר במצבים כאלה קשורה לכך. בעצם מדובר על משתמשים שונים והבעיה בדרך כלל קשורה להרשאות של השמתמש שמריץ את ה Job

    למעשה הכלל המדוייק לגבי מי מריץ את שירות ה Agent קובע שאם המשתמש שהוא הבעלים של הJOB הוא sysadmin אז מטעמי אבטחה ה JOB רץ תחת המשתמש של מערכת ההפעלה אשר מפעיל את השירות של ה JOB. אבל אם המשתמש הוא non-sysadmin אז זה המשתמש אשר יריץ את ה JOB ויש לתת לו הרשאות מתאימות.

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

    הערה: למשתמשים מסוג שירות כמו NT SERVICE יש מספר זיהוי ייחודי SID כמו משתמשים אמיתיים אבל מערכת ההפעלה "מודעת" לכך שזה לא משתמש אמיתי.

    * הערה: כל ההגדרות שאתה צריך בנושא זה ניתן לבצע בעזרת ה SQL Server Configuration Manager

    הפתרון הכי נפוץ לבעיה זו הוא כמו שמופיע בקישור שיובל הביא. מדובר בטעות נפוצה מאוד מבחינת אבטחה להגדיר את ה owner של ה Job כמשתמש שהוא sysadmin כמו למשל sa כאשר אתה נמצא במערכת production! עם זה כפי שתכתבי זה הפתרון הקל ביותר למימוש. כפי שכתבתי קודם, מכיוון ש sa הוא sysadmin אז כל מה שאתה מריץ ב ג'וב ירות תחת המשתמש היורטואלי מסוג NT Service ולמשתמש הזה אין הרשאות מחוץ לסקופ של השרת ולכן הרצת חבילות של SSIS בדרך כלל יכשלו.

    אז מה...

    פתרון 1: כמו שמופיע בקישור שסיפק יובל, אפשר להגידר Proxy ולהריץ את הג'וב דרך הפרוקסי.

    פתרון 2: לשנות את המשתמש אשר מפעיל את השירות של ה SQL Agent לכזה שמתאים להריץ את הג'ובים

    מה עכשיו בינתיים?

    1. אנא ספק את המידע החסר על מנת שנוכל לשחזר את הבעיה וכמובן את הודעת השגיאה ולא את ההודעה על כלך שיש הודעת שגיאה 

    2. ניסית להריץ את החבילה ישירות וזה עבד, ניסת הלריץ את החבילה דרך Job מתוזמן וזה לא עבד. אנא נסה להריץ את ה Job ישירות ובדוק מה קורה (אני מנחש שזה לא יעבוד אבל צריך לבדוק את הנושא)

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


    signature   Ronen Ariely
     [Personal Site]    [Blog]    [Facebook]    [Linkedin]

    יום חמישי 02 מאי 2019 20:04
    מנחה דיון