none
בעיית SSIS - שגיאה בהרצה מג'וב "Key not valid for use in specified state." RRS feed

  • שאלה

  • היי.

    אני מריץ PACKAGE של SSIS דרך ג'וב ב-SQL.אני מקבל הודעת שגיאה כזו:

    Failed to decrypt protected XML node "DTS:Password" with error 0x8009000B "Key not valid for use in specified state.". You may not be authorized to access this information. This error occurs when there is a cryptographic error. Verify that the correct key is available

    (בהרצה פשוטה ה-PACKAGE מצליח, הכשלון הוא רק בהרצה דרך ג'וב).

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

    דובר בעיקר על הגדרות ProtectionLevel (אצלי מוגדר EncryptSensitiveWithUserKey, מומלץ לשנות ל-"Dont Save Sensitive" אבל אצלי במקרה כזה ה-PACKAGE נופל גם בהרצה פשוטה).

    כמו כן, ה-CONNECTION STRINGS של ה-SOURCE וה-DESTINATION מוגדרים לרוץ עם SQL Server Authentication. זה חשוב כי אני הג'וב רץ משרת ה-DB, וההחבילה נמצאת בתיקייה במחשב שלי (תיקייה משותפת שהשרת מכיר). ראיתי גם המלצות לעבוד עם Windows Authentication. אבל ל-USER שלי אין הרשאה על השרת (נסיתי להוסיף לקבוצות מסויימות של ה-SQL אבל עוד לא הצלחתי לתת לעצמי הרשאות...).

    לגבי ה-SQL Server Authentication, עוד עניין: משום מה הרבה פעמים ה-PACKAGE "שוכח" את הסיסמא, וזה גורם לנפילת ה-PACKAGE. למה ה-PACKAGE "סנילי" כ"כ??

    אשמח לרעיונות והצעות.

    אגב, הנה כמה מהלינקים שראיתי:

    http://social.msdn.microsoft.com/Forums/en-US/sqlintegrationservices/thread/cb7f9fc5-2895-43c3-95de-7876a49b593c

    http://support.microsoft.com/kb/918760

    http://social.msdn.microsoft.com/Forums/en/sqlintegrationservices/thread/c2f3f784-7dc8-4bde-ac96-bce0edaa2d1b

    http://www.sqlservercentral.com/Forums/Topic785611-148-1.aspx

    http://dbaspot.com/forums/sqlserver-dts/364022-password-failed-decrypt-error-when-set-not-encrypted.html

    תודה!


    itaigitt, http://copypastenet.blogspot.com
    יום ראשון 13 פברואר 2011 14:35

תשובות

  • שלום לכולם,

    הבעיה נפתרה ומה שבוצע הוא כדלקמן:

    1. התקנה מלאה של ה- integration services, לא היה מותקן במלואו במקור.

    2. יצירת קובץ קונפיגורציה ל- Package, לשמירת ה- Connection strings.

    3. הרצת ה- package ,לוקאלית ללא job , ע"מ לוודא שהקריאה מקובץ הקונפיגורציה תקינה.

    4.כמו בסעיף 3 אך על שרת ה- Production.

    5. יצירת JOB עם הגדרות של הרצת package שממוקם ב- file system.

    6. ברכות ואיחולים.

    יום טוב


    אסף שלם
    • סומן כתשובה על-ידי itaigitt יום שלישי 15 פברואר 2011 10:07
    יום שלישי 15 פברואר 2011 10:03
  • היי.

    קודם כל תודה.

    לגבי הג'וב המקורי שנפל - בנוסף למה שאסף רשם, מסתבר שהכנסתי לו הגדרות מיותרות בהגדרת ה-STEP בטאב Execution options ובטאב Verification. כמו כן בחרתי את קובץ הקונפיגורציה, וסימנתי את ה-Connection strings ואף ערכתי אותם.

    בפועל הגדרות אלו גרמו לנפילה. כאשר השדות בטאבים אלו נשארו ללא שינוי (לא מסומנות) - הג'וב רץ.

    בפועל, מה שצריך להגדיר ב-STEP זה רק את שם ה-STEP, הגדרת ה-TYPE כ-"SQL Server Integration Services Package", ובחירת קובץ ה-PACKAGE.

    הגדרה כזו תיצור command line פשוט: /FILE "C:\packageTest\AssignmentsHistoryPackage.dtsx"  /CHECKPOINTING OFF /REPORTING E (ה-command line שהיה לי לפני היה ארוך הרבה יותר, מן הסתם....).


    itaigitt, http://copypastenet.blogspot.com
    • סומן כתשובה על-ידי itaigitt יום שלישי 15 פברואר 2011 10:14
    יום שלישי 15 פברואר 2011 10:14

כל התגובות

  • הי,

    תפתח את ה package ב- SSIS.

    תפתח אאת מאפייני ה- Package ע"י לחיצה על כפתור ימני בעכבר ובחירת properties.

    בלשונית שנפתחה, תסמן ב- Protection level, מתחת ל- security section,  את האופציה הבאה - DontSaveSensetive ותשמור.

    עכשיו זה צריך לרוץ ללא בעיה.

    בהצלחה,

     


    אסף שלם
    יום שני 14 פברואר 2011 08:59
  • הי,

    לאחר קריאה נוספת של ה- Post הבנתי שאתה מריץ את ה - package ללא קובץ קונפיגורציה.

    ולדעתי פה שורש הבעיה,  תפתח אאת מאפייני ה- Package ע"י לחיצה על כפתור ימני בעכבר ותבחר Package configuration.

    תסמן, אפשר קונפיגורציה, תשלים את ה- wizard ותשמור את ה- package.

    תוודא שה-package שרץ ע"י ה- JOB יכול להגיע למיקום הקונפיגורציה, הייתי ממליץ לך לשים את שניהם באותה תיקיה, ותריץ.

    בהצלחה


    אסף שלם
    יום שני 14 פברואר 2011 09:10
  • היי אסף.

    שסימנתי DontSaveSensetive ה-PACKAGE לא רץ בשום סיטואציה, ולכן החזרתי ל-EncryptSensitiveWithUserKey.

    ה- wizard הוא לא NEXT-NEXT.... אני מניח שיש חשיבות לאיך שמקנפגים את ה-PACKAGE...

    איך היית ממליץ לקנפג, ואיך אני אמור לעדכן את הג'וב?

    והאם יש אפשרות ליצור איזשהו קובץ של ה-PACKAGE שאותו אני יכול לדוגמא להעביר לשרת או למערכת אחרת וכדו'? (סטייל קובץ EXE שמייצרים לתוכנות)

    תודה!


    itaigitt, http://copypastenet.blogspot.com
    יום שני 14 פברואר 2011 09:42
  • הי איתי,

    נתחיל בזה שאתה צריך לסמן Don't Save sensetive לכל הפחות לפני הגירסא שצריכה לרוץ ע"י ה- JOB כי בכל מקרה לא יהיה לג'וב את מפתח ההצפנה עבור ה Password.

    לגבי הקונפיגורציה:

    1. סמן אפשר קונפיגורציה.

    2. לחץ הוסף.

    3. חלון -  Select configuration type

     Configuration Type - XML

    Browse to the location you want to save the file, מומלץ לשמור במיקום של ה- package. לאחר הבחירה תמחק את ה- path ותשאיר רק את שם הקובץ, כך החיפוש יעשה בתיקייה שך ה- Package.

    לחץ הבא

    4. חלון  -select Properties to export

    תבחר מ- objects את התיקייה של ה- connection Manager ותבחר את החיבור והמאפיינים הרצויים, תהיה סלקטיבי, אני בדר"כ בוחר רק Connection String ן- name.

    לחץ הבא

    5. תן שם לקונפיגורציה

     6. סיום

    תעתיק את ה- Package ו הקונפיגורציה לתיקייה ותריץ ע"י הג'וב.

    אם הגדרת נכון אין סיבה שזה לא יעבוד.

    בהצלחה,

     

     


    אסף שלם
    יום שני 14 פברואר 2011 10:40
  • Executed as user: DEV-WIN2008R2\SYSTEM. Microsoft (R) SQL Server Execute Package Utility  Version 10.50.1600.1 for 64-bit  Copyright (C) Microsoft Corporation 2010. All rights reserved.    Started:  13:58:31  DTExec: Signature verification failed.  The signature status is not present.  Started:  13:58:31  Finished: 13:58:34  Elapsed:  3.234 seconds.  The package could not be loaded.  The step failed.

    משום מה הוא מסרב לשמוא את הסיסמאות של משתמש SQL שנתתי לו (sa).

    יש סיבה למה ה-PACKAGE "שוכח" את הסיסמא כל הזמן? (מה שגורם לנפילת ה-PACKAGE)


    itaigitt, http://copypastenet.blogspot.com
    יום שני 14 פברואר 2011 12:01
  • הי איתי,

    ע"מ לקצר תהליכים, תתקשר אלי 2208649 054, נפתור את הבעיה ונעלה פוסט.


    אסף שלם
    יום שני 14 פברואר 2011 12:18
  • היי אסף.

    לפני שאני מתקשר, הנה עוד כמה דברים שניסיתי לעשות:

    קראתי שאפשר (וצריך כנראה) לערוך את קובץ הקונפיגורציה שנוצר (.dtsConfig) ולהוסיף לו את הסיסמא (...User ID=sa;...-->...User ID=sa;Password=pass;...)

    כמו כן, הוספתי בלשונית configurations את קובץ הקונפיגורציה.

    עדיין קבלתי את אותה השגיאה של error: DTExec: Signature verification failed.  The signature status is not present. 

    נסיתי לעשות את אותו השינוי של הוספת הסיסמא גם ב-command line של הג'וב, עדין קבלתי אותה השגיאה. בנוסף, מה שיותר מוזר - השינוי של הוספת הסיסמא לא נשמר!

    נסיתי לעשות שינוי נוסף שקראתי עליו ועזר לי בסיטואציות אחרות, ושיניתי מ-

    /CONNECTION "DEVWIN2008R2.ItaiDW.sa";"\"  

    ל-

    /CONNECTION "\"DEVWIN2008R2.ItaiDW.sa\"";"\"

    ושוב - קבלתי אותה השגיאה. ושוב - השינוי לא נשמר!

    מה קורה פה? נראה לי שה-SQL וה-SSIS מריצים צחוקים על חשבוני...... :-S


    itaigitt, http://copypastenet.blogspot.com
    יום שני 14 פברואר 2011 13:31
  • הי איתי,

    כאשר אתה מבודד את ה- package מה- solution ה - Connection string צריך להופיע או בקובץ קונפיגורציה או בטבלת קונפיגורציה.

    בהנחה שבחרנו קובץ, וההגדרות חיבור לא windows authentication אזי אתה צריך להוסיף את ה password ל- connection string.

    תנסה את הפעולה הבא:

    תאפשר קונפיגורציה ןתשמור את החבילה עם הגדרות security - dontsavesensetive .

    פתח קובץ קונפיגורציה ותוודא שה- connectionstring נכון.

    תעתיק את ה- package וקובץ הקונפיגורציה לתיקיה נפרדת.

    תריץ את ה- Package לא מ-ג'וב ותראה עם זה מצליח.

    במידה וכן, יש לך בעיה ב- user שמריץ את ה- ג'וב.

    במידה ולא, חבל, ננסה משהו אחר.

     


    אסף שלם
    יום שני 14 פברואר 2011 14:40
  • שלום לכולם,

    הבעיה נפתרה ומה שבוצע הוא כדלקמן:

    1. התקנה מלאה של ה- integration services, לא היה מותקן במלואו במקור.

    2. יצירת קובץ קונפיגורציה ל- Package, לשמירת ה- Connection strings.

    3. הרצת ה- package ,לוקאלית ללא job , ע"מ לוודא שהקריאה מקובץ הקונפיגורציה תקינה.

    4.כמו בסעיף 3 אך על שרת ה- Production.

    5. יצירת JOB עם הגדרות של הרצת package שממוקם ב- file system.

    6. ברכות ואיחולים.

    יום טוב


    אסף שלם
    • סומן כתשובה על-ידי itaigitt יום שלישי 15 פברואר 2011 10:07
    יום שלישי 15 פברואר 2011 10:03
  • היי.

    קודם כל תודה.

    לגבי הג'וב המקורי שנפל - בנוסף למה שאסף רשם, מסתבר שהכנסתי לו הגדרות מיותרות בהגדרת ה-STEP בטאב Execution options ובטאב Verification. כמו כן בחרתי את קובץ הקונפיגורציה, וסימנתי את ה-Connection strings ואף ערכתי אותם.

    בפועל הגדרות אלו גרמו לנפילה. כאשר השדות בטאבים אלו נשארו ללא שינוי (לא מסומנות) - הג'וב רץ.

    בפועל, מה שצריך להגדיר ב-STEP זה רק את שם ה-STEP, הגדרת ה-TYPE כ-"SQL Server Integration Services Package", ובחירת קובץ ה-PACKAGE.

    הגדרה כזו תיצור command line פשוט: /FILE "C:\packageTest\AssignmentsHistoryPackage.dtsx"  /CHECKPOINTING OFF /REPORTING E (ה-command line שהיה לי לפני היה ארוך הרבה יותר, מן הסתם....).


    itaigitt, http://copypastenet.blogspot.com
    • סומן כתשובה על-ידי itaigitt יום שלישי 15 פברואר 2011 10:14
    יום שלישי 15 פברואר 2011 10:14