2010-02-23 7 views
5

मैंने एक विशिष्ट डेटाबेस (डेटाबेस नाम द्वारा फ़िल्टर किए गए) के लिए हमारे उत्पादन सर्वर पर एक ट्रेस (टेम्पलेट: tsql_replay) पर कब्जा कर लिया है। मैं इसे अपने परीक्षण सर्वर पर फिर से खेलना चाहता हूं, लेकिन निश्चित रूप से डेटाबेस आईडी परीक्षण सर्वर पर अलग है।विभिन्न डेटाबेस पर एक एसक्यूएल प्रोफाइलर ट्रेस कैसे दोबारा चलाने के लिए?

अभी तक, मैंने ट्रेस फ़ाइल को एक तालिका में लोड करने और अद्यतन क्वेरी के साथ डेटाबेस आईडी को संशोधित करने का प्रयास किया है (नीचे देखें), लेकिन प्रोफाइलर मुझे इसे फिर से चलाने की कोशिश करते समय त्रुटि देता है (अनुपस्थित घटनाएं, आदि)। अगर मैं सीधे ट्रेस फ़ाइल खोलता हूं, तो यह मुझे इसे फिर से चलाने की अनुमति देता है। तो किसी भी तरह, या तो एक टेबल में लोड हो रहा है या डेटाबेस आईडी बदल रहा है कुछ गड़बड़ है।

रीप्ले के लिए ट्रेस कैप्चर करने के लिए सही प्रक्रिया क्या है, और डेटाबेस को बदलने पर इसे फिर से चलाया जाना चाहिए?

select * into trace_table 
from fn_trace_gettable('f:\trace\trace100222.trc', default) 
go 
update trace_table 
set databaseid = 47 
where databaseid = 16 
+0

क्या आपकी समस्या का समाधान हुआ? यदि ऐसा है तो कृपया उत्तर के रूप में चिह्नित करें। –

उत्तर

3

आप ट्रेस बना सकते हैं और खुले बाद में के रूप में खेलना के लिए ट्रेस एक्सएमएल फ़ाइल में सहेजें, एक्सएमएल और ट्रेस एक्सएमएल पर डाटाबेस आईडी को बदलने के लिए है।

सावधान रहें कि यदि आप एक एसक्यूएल 2008 से एसक्यूएल 2000 तक ट्रेस करते हैं, तो आप अंत दिनांक और घंटा निर्धारित नहीं कर सकते हैं, क्योंकि ओडीबीसी डेटटाइम त्रुटि होगी।

लेकिन वह यह काम करता है के अलावा अन्य, सामान्य रूप से।

0

मुझे नियमित ट्रेस फ़ाइलों (.trc) को फिर से चलाने में कोई परेशानी नहीं है। उन्हें एक्सएमएल होना जरूरी नहीं है। यह एसक्यूएल 2005 में है। आपको ट्रेस को फिर से चलाने के लिए सक्षम होने के लिए कुछ ईवेंट कैप्चर करना सुनिश्चित करना होगा। TSQL_Replay ट्रेस टेम्पलेट इस में आपकी सहायता करेगा।

रीप्लेइंग करते समय, मैं रीप्ले संवाद में उन्नत रीप्ले विकल्प टैब पर रीप्ले सिस्टम एसपीआईडी ​​को चालू करता हूं। मैं परिणामों को बाद में विश्लेषण के लिए एक तालिका में सहेजता हूं।

1

यह दो साल बाद है, लेकिन मैं ठीक उसी समस्या हो रही थी।

  1. प्रारंभ एसक्यूएल सर्वर प्रोफाइलर
  2. ओपन ट्रेस फ़ाइल
  3. खेलना ट्रेस फ़ाइल यह एक तालिका के रूप
  4. सहेजें ट्रेस फ़ाइल काम करता है पुष्टि करने के लिए (T1)
  5. : यहाँ मैं इसे कैसे हल किया है तालिका जहां आवश्यक
  6. ओपन अद्यतन तालिका ट्रेस
  7. खेलना टीआर (मेरे मामले में, मैं एक स्थानीय उपयोगकर्ता के लिए LOGINNAME अद्यतन करने के लिए किया था) को अपडेट करें इक्का

ध्यान दें करने के लिए, मैं एक मेज का पता लगाने के लिए ट्रेस फ़ाइल सहेजने की प्रक्रिया के खिलाफ एक निशान भाग गया और प्रोफाइलर भी बहुत कुछ fn_trace_gettable का उपयोग की तुलना में एक मेज पर ट्रेस सामग्री लिखने के लिए करता है। यह sp_cursor कमांड की एक श्रृंखला के माध्यम से ट्रेस तालिका में विभिन्न आंतरिक विशेषताओं को जोड़ने लगता है जो इस तरह दिखते हैं:

exec sp_cursor 180150003,4,0,N'[dbo].[T1]',@EventClass=65528,@BinaryData=0xFFF... 
संबंधित मुद्दे

 संबंधित मुद्दे