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

24/02/2011

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

שייך לקטגוריה: 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 של התגובות על הרשומה הזו טרקבאק קישור

כתיבת תגובה

Fill in your details below or click an icon to log in:

WordPress.com Logo

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

Twitter picture

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

Facebook photo

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

Connecting to %s

ערכת עיצוב: Shocking Blue Green. בלוג בוורדפרס.קום.

Follow

Get every new post delivered to your Inbox.

הצטרפו אל 25 שכבר עוקבים אחריו