2013-01-04 26 views
5

पर लॉगिंग मैं एसएसआईएस के लिए नौसिखिया हूं। मैंने कुछ अनुक्रम कंटेनर और उनके भीतर कुछ कार्य के साथ एक पैकेज बनाया है। पैकेज स्वचालित रूप से चलाने के लिए निर्धारित किया जाएगा और इस प्रकार मैं रन डेटाबेस त्रुटियों और स्थिति को कैप्चर करना चाहता हूं जैसे SQL डेटाबेस में अपनी लॉगिंग तालिका में डाली गई/अपडेट/हटाई गई पंक्तियों की संख्या।एसएसआईएस एसक्यूएल सर्वर

मैं डिफ़ॉल्ट तालिका में प्रविष्टियों को लॉग इन करने के लिए एसएसआईएस लॉगिंग एसक्यूएल सर्वर सुविधा का उपयोग करने के बारे में सोच रहा था और फिर अपनी खुद की लॉगिंग टेबल में डालने के लिए एक SQL कार्य बना रहा था। क्या यह करने का एक अच्छा तरीका है? या आप अन्य बेहतर तरीकों का सुझाव देते हैं?

इसके अलावा मैं एसएसआईएस लॉगिंग को ठीक से काम करने के लिए नहीं मिला। मुझे एक ऑनलाइन ब्लॉग How to create an error log or custom error log within an SSIS Package? मिला जो SQL सर्वर में प्रविष्टियों को लॉग करने के लिए SSIS लॉगिंग का उपयोग करने की प्रक्रिया का वर्णन करता है। हालांकि, ब्लॉग में समझाए गए अनुसार,

मैं या तो अपने SQL सर्वर डेटाबेस में बनाए गए dbo.sysssislog या dbo.sp_ssis_addlogentry टेबल नहीं देख सकता। मुझे गलत क्या करना चाहिए? यहां दिए गए चरणों का पालन किया गया है -

1. Went to SSIS Logging 
2. Selected Provider Type as SQL Server 
3. Added the OLEDB connection for Configuration 
4. Went to the Detail tabs on each sequence container and chose appropriate events 
5. Clicked "Save..." 
6. Provided the location and name for the XML file 
7. Saved the package and ran it. 

अभी भी डेटाबेस में उन एसएसआईएस तालिका या प्रक्रिया को नहीं देख सकता है। मैं एसक्यूएल 2008 आर 2 का उपयोग कर रहा हूँ।

किसी भी सुझाव और सिफारिशों की बहुत सराहना की गई।

अग्रिम धन्यवाद।

+0

संग्रहीत proc और टेम्पलेट लॉग तालिका सूची आप में कॉपी किया जायेगा जब पैकेज पहले निष्पादित होता है तो लॉग प्रदाता में चयनित होता है। वे वर्तमान में msdb में मौजूद हैं। – billinkc

उत्तर

9

अपनी सूची में # 3 पर देखें। उस डेटाबेस के स्थान का एक नोट बनाओ।

एसएसएमएस में उस डेटाबेस पर नेविगेट करें। डेटाबेस का विस्तार करें (बाईं ओर प्लस साइन पर क्लिक करें)।

तालिका स्थान के लिए:

टेबल्स विस्तृत फ़ोल्डर। सिस्टम टेबल्स फ़ोल्डर का विस्तार करें। तालिका वहां दिखाई देनी चाहिए। इसका नाम dbo.sysssislog है।

प्रक्रिया स्थान के लिए:

Programmability फ़ोल्डर का विस्तार करें। सिस्टम संग्रहीत प्रक्रिया फ़ोल्डर का विस्तार करें। संग्रहीत प्रक्रिया दिखाई देनी चाहिए। इसका नाम dbo.sp_ssis_addlogentry है।

+0

अब मैं msdb डेटाबेस में तालिका देख सकता हूं। लेकिन जब मैं पैकेज निष्पादित करता हूं तो इसमें लॉग इन करने के लिए कुछ भी नहीं मिल सकता। मैंने "कॉन्फ़िगरेशन" ओएलई डी शामिल करने के लिए "एसएसआईएस लॉगिंग" स्क्रीन के "प्रदाता और लॉग" टैब में एमएसडीबी डेटाबेस से बी कनेक्शन। मेरे पास शीर्ष स्तर के कंटेनर के लिए चुनी गई सभी घटनाएं भी हैं जो मेरे सभी अनुक्रम कंटेनर और कार्य में बहती हैं। मैं क्या सही काम नहीं कर रहा हूँ। धन्यवाद। – edyleddie

+0

एमएसडीबी डेटाबेस में प्रतियां सिर्फ टेम्पलेट्स हैं। आप उन्हें एक और डीबी में इस्तेमाल करना चाहिए। इसे बदलने से पहले # 3 से आपका डीबी क्या था? यही वह जगह है जहां आपकी वस्तुएं होंगी। याद रखें कि 2008 और 2008 आर 2 में वे सिस्टम ऑब्जेक्ट होंगे। 2012 के बारे में निश्चित नहीं है। –

2

पुन। उपयोगकर्ता डीबी (सिस्टम टेबल फ़ोल्डर के अंदर) में sysssislog sys तालिका की दृश्यता। मैंने एसएसआईएस पैकेज (2008 आर 2) के लिए लॉगिंग सेट की है, जिसमें उपयोगकर्ता डीबी निर्दिष्ट करते हुए "SQL सर्वर डेटाबेस पर ईवेंट के लिए लॉग प्रविष्टियां लिखती हैं"। उसके बाद मैंने एसएसआईएस पैकेज चलाया। मुझे सिस्टम टेबल फ़ोल्डर में sysssislog मिला है (और इसमें अपेक्षित डेटा है)। इसके बाद मैंने परीक्षण करने का फैसला किया कि यह तालिका "एसएसआईएस पैकेज के प्रत्येक भाग पर बनाई गई है"। मैंने इस टेबल को खींचा। मैंने फिर से एसएसआईएस पैकेज चलाया है। तालिका sysssislog वास्तव में बनाया गया था (उपयोगकर्ता तालिका में), और सही डेटा, ठीक है।

हालांकि मैं एसएसएमएस में सिस्टम टेबल में कभी भी इसे नहीं देख सका। दूसरे शब्दों में, तालिका मौजूद है (उदा। Sysobjects, systables आदि में मौजूद है), लेकिन एसएसएमएस ऑब्जेक्ट ऑब्जेक्ट एक्सप्लोरर में सूची में नहीं दिखाया गया है। मैं समझता हूं कि यह एसएसआईएस बग नहीं है (एसएसआईएस वास्तव में प्रत्येक रन पर इस तालिका को फिर से बनाता है), लेकिन यह एसएसएमएस बग है (यह किसी भी तरह से इस तालिका के लिए मेटाडेटा खो देता है)।

मैंने इस तालिका को कई बार गिरा दिया और एसएसआईएस पैकेज फिर से चलाया, यह वास्तव में फिर से बनाया गया है और हर बार चलने वाले अंतिम एसएसआईएस पैकेज से डेटा के लिए फिर से पॉप्युलेट किया जाता है।

लेकिन मैं कभी भी ऑब्जेक्ट ब्राउज़र में इसे देखने में सक्षम नहीं था (निश्चित रूप से मैंने इसे किसी भी स्तर पर रीफ्रेश किया है, बंद/दोबारा खोल दिया एसएसएमएस - इस तालिका को किसी भी कारण से कभी नहीं दिखाया गया है)। मैं एमएसडीबी डीबी में इस सिस्टम टेबल को देखने में सक्षम हूं (लेकिन यह खाली है)।

मैंने विभिन्न डीबी के लिए लॉगिंग का निर्माण दोहराया (एक अलग डीबी के लिए नया कनेक्शन बनाना)। एसएसआईएस रन, sysssislog तालिका बनाई गई है और सिस्टम टेबल में देखा जा सकता है (हालांकि, एक बार फिर, अगर मैं इस तालिका को छोड़ दूंगा, तो यह ऑब्जेक्ट ब्राउज़र में फिर से सृजन पर नहीं दिखाई देगा)।

बस साझा करना चाहता था, दिलचस्प बग। एमएस क्यूए द्वारा कभी परीक्षण नहीं किया गया था (एसएसआईएस में एसएसएमएस में तालिका निर्माण की अधिसूचना दूसरी और बाद में इस तालिका निर्माण के बाद)।

अलेक्सई

1

यहां तक ​​कि अगर आप SSIS लॉगिंग और मामले में आप (वास्तविक पैकेज को क्रियान्वित करने के बिना) एक कार्य निष्पादित करने के लिए कोशिश कर रहे हैं सक्षम है, तो sysssislog तालिका या तो msdb में या उल्लेख किया कनेक्शन प्रबंधक में नहीं बनाया जाएगा ।

1

लॉगिंग के लिए, मैं आमतौर पर वेरिएबल के माध्यम से जो जानकारी चाहता हूं उसे पकड़ लेता हूं और फिर प्रक्रिया के अंत में, मेरे पास एक संग्रहित प्रक्रिया है जिसे मैं निष्पादित करता हूं, जो "ProjectLog" तालिका में रिकॉर्ड दर्ज करता है। सुनिश्चित नहीं है कि यह आदर्श है, लेकिन यह हमारे लिए काम करता है।

कारण: * त्रुटि संदेशों को अनुकूलित किया जा सकता है, इसलिए पढ़ने और समस्या निवारण के लिए संभावित रूप से आसान है। * हमारे पास कस्टम, समझने में आसान त्रुटि संदेशों के साथ "ऑनर्रर" कार्य हैं (उदाहरण के लिए, "प्रक्रिया निष्पादित नहीं हुई। फ़ाइल एक्स एक्स एक्स कॉलम/फ़ील्ड के लिए आवश्यक डेटा गायब है। * आपके समूह के लिए मूल्यवान डेटा को पूरा करने के लिए जो डेटा जोड़ सकता है व्यापार की आवश्यकताओं।

* नोट, इस एक अतिरिक्त कदम हम करते है, त्रुटि लॉगिंग कि प्रत्येक दिन अधिलेखित कर देता है के साथ एक पाठ फ़ाइल के अलावा।