הבלוג של גרי רשף

24/02/2011

לכידת פלט פרוצדורה

Filed under: Uncategorized — תגיות: , , , , — גרי רשף @ 21:30

כשאנחנו מריצים קוד ב-SSMS הפלט שלו מופנה בדרך כלל ללשוניות ה-Results (פלט של שאילתות Select) וה-Messages (הודעות מערכת, פקודות Print ו-RaisError):

clip_image002

את הפלט הזה אנחנו רוצים לקלוט- לצרכי מעקב או לשם עיבוד, ויש לכך דרכים שונות – חלקן מוכרות וברורות מאליהן (למשל להעתיק אותן ידנית מה-SSMS ל-Excel) וחלקן פחות מוכרות ונועדו למקרים מיוחדים.

את הפלט בלשונית ה-Messages נרצה לשמור בדרך כלל בגלל פקודות Print ששילבנו בקוד לשם מעקב ו-Debug, ובגלל דיווחים אוטומטיים של המערכת כמו הודעות שגיאה – אם יש, וכדומה. את הפלט ניתן כאמור להעתיק ידנית, לשמור לקובץ על ידי קליק ימני ובחירה באופציה המתאימה, ואף להגדיר שמירה לקובץ כברירית מחדל:

clip_image004

כאשר מריצים באופן אוטומטי (לא ידנית דרך ה-SSMS) יש מספר אפשרויות:

1. ברוב המקרים הרצה אוטומטית נעשית דרך ג'וב שמאפשר לתזמן את הפעלתו האוטומטית של הקובץ, ואז ב-Step הרלוונטי שכולל הפעלה של פרוצדורה או קוד SQL – ניתן לקבוע בדף ה-Advanced שהפלט הנ"ל יופנה לקובץ או לטבלה, וכן להגדיר אם הפלט של כל הרצה יתווסף לקיים או ידרוס אותו:

clip_image006

  1. במקרים אחרים ניתן להריץ בעזרת SQLCmd ואת הפלט להפנות לקובץ (במקרה זה פלט הפרוצדורה MyPrc מופנה לקובץ הטקסט C:\MyPrc.txt):

clip_image008

  1. אופציה נוספת לנ"ל (שימוש ב-SQLCmd) היא להריץ אותו בעזרת XP_CmdShell ואת הפלט להפנות לטבלה:
Create Proc MyPrc As

Print GetDate();

Go


Create Table MyTbl(ID Int Identity Primary Key,

Trace Varchar(Max));

Go


Insert Into MyTbl

Exec XP_CmdShell 'sqlcmd -E -Q "Exec MyDB.dbo.MyPrc"';

Go

clip_image010

  1. מי שבונה ישום להפעלת הפרוצדורה (נניח- ממשק משתמש שנכתב ב-Dot.Net, תזמון בעזרת Control-M וכו') – יוכל לבדוק אם יש לכלי הפיתוח אופציה ללכוד את הפלט שלה (בדרך כלל יש).

כדאי לציין שבכל המקרים הנ"ל לא תתקיים הפרדה כמו ב-SSMS בין Results ן-Messages וכל הפלט ילכד ביחד.

מודעות פרסומת

להגיב »

עדיין אין תגובות.

RSS feed for comments on this post. TrackBack URI

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s

בלוג בוורדפרס.קום.

%d בלוגרים אהבו את זה: