2011-10-10 9 views
6

मैं दोनों के बीच मतभेदों की जांच के लिए दो SQL सर्वर डेटाबेस (विकास और लाइव वातावरण, SQL2005 और SQL2008 क्रमशः) की तुलना कर रहा हूं। यदि मैं प्रत्येक डेटाबेस के लिए एक स्क्रिप्ट उत्पन्न करता हूं तो अंतरों को हाइलाइट करने के लिए मैं एक साधारण पाठ तुलना का उपयोग कर सकता हूं।मैं जेनरेट की गई SQL स्क्रिप्ट के आउटपुट को कैसे क्रमबद्ध कर सकता हूं?

समस्या यह है कि स्क्रिप्ट को तुलना को कम करने और सरल मतभेदों से बचने के लिए एक ही क्रम में होने की आवश्यकता होती है जहां संग्रहित प्रक्रियाओं का क्रम अलग होता है, लेकिन उनकी सामग्री समान होती है।

तो अगर मैं विकास से उत्पन्न:

1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL) 
2: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL) 
3: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL) 

और यह लाइव से:

1: CREATE TABLE dbo.Table1 (ID INT NOT NULL, Name VARCHAR(100) NULL) 
2: CREATE TABLE dbo.Table3 (ID INT NOT NULL, Name VARCHAR(100) NULL) 
3: CREATE TABLE dbo.Table2 (ID INT NOT NULL, Name VARCHAR(100) NULL) 

दो पर प्रकाश डाला लाइनों 2 और 3 के रूप में विभिन्न मुकाबले, लेकिन वे वास्तव समान हों, तो बस जेनरेट स्क्रिप्ट विज़ार्ड ने लाइव वातावरण पर टेबल 2 से पहले टेबल 3 किया था। 100 टेबल, संग्रहित प्रक्रियाओं, विचारों, आदि में जोड़ें और यह जल्दी ही एक गड़बड़ बन जाता है।

मेरे वर्तमान विकल्प हैं:

  1. मैन्युअल तुलना
  2. से पहले सामग्री को सॉर्ट एक विशेष क्रम
  3. एक फ्रीवेयर आवेदन है कि उत्पन्न स्क्रिप्ट सॉर्ट करता खोजें में स्क्रिप्ट बनाने के लिए एक कार्यक्रम बनाने के
  4. किसी उत्पाद के लिए भुगतान करें जो इसे टूल के अपने सूट के हिस्से के रूप में करता है
  5. (ऐसा करने का कोई अन्य तरीका)

उम्मीद है कि, मुझे केवल उस चेकबॉक्स को याद आ रहा है जो "नाम से लिपियों को सॉर्ट करें" कहता है, लेकिन मैं ऐसा कुछ भी नहीं देख सकता जो ऐसा करता है। मुझे नहीं लगता कि मुझे 'सॉर्ट आउटपुट' विकल्प या अन्य अनियंत्रित टूल के रूप में सरल कुछ के लिए भुगतान करना होगा, इसलिए विकल्प 4 केवल अंतिम उपाय होना चाहिए।

संपादित मैं दोनों के वातावरण के लिए पूरा उपयोग किया है, लेकिन लाइव पर्यावरण को लाइव तक पहुँचने के लिए विशिष्ट तरीका नीचे बंद कर दिया जाता है और आभासी सर्वरों पर होस्ट, दूरस्थ desktoping साथ। मेरी वरीयता है कि मैं विकास के लिए क्या कर सकता हूं और वहां तुलना कर सकता हूं। मैं अलग फ़ाइलों (टेबल, सपा के, कार्य, आदि)

+0

आप शायद CREATE स्क्रिप्ट में टेक्स्ट अंतरों की तलाश करके डेटाबेस स्कीमा की तुलना में परेशानी के लिए पूछ रहे हैं, लेकिन शायद पहले सभी लाइनों को सॉर्ट करने के लिए नोटपैड 2 या कुछ ऐसा उपयोग करें? –

+0

@ माइक: यदि वह वर्णमाला में लिपि में सभी पंक्तियों को टाइप करता है, तो वह कैसे बताने में सक्षम होगा कि विभिन्न वस्तुएं क्या हैं? – codeulike

+0

कोई फ़ाइल तुलना उपकरण, जैसे "एफसी" .. –

उत्तर

6

के रूप में डेटाबेस में वस्तु के प्रत्येक प्रकार के लिए स्क्रिप्ट उत्पन्न कर सकते हैं दृश्य स्टूडियो के संस्करण के आधार पर (आप इसे किया है), तो आप ऐसा कर सकते हैं आसानी से डेटा मेनू के माध्यम से, आपके मूल उद्देश्य के आधार पर, आप स्वयं को कुछ समय बचा सकते हैं।

संपादित: वास्तविक डीबी के जनरेट कर रहा है और उसके बाद स्कीमा तुलना उपकरण के रूप में नीचे दिखाया गया है की तुलना दो स्क्रिप्ट फ़ाइलें की तुलना के रूप में ही शुद्ध प्रभाव है और आप पंक्ति विराम आदि के बारे में चिंता करने की ज़रूरत नहीं

enter image description here

+0

मुझे लगता है कि ओपी स्कीमा निर्माण स्क्रिप्ट की तुलना करना चाहता था, और वास्तव में तुलना करने के लिए लाइव डेटाबेस नहीं था। –

+1

वह दोनों स्क्रिप्ट चला सकता है, उन्हें दो डीबी बनाने दें और फिर स्कीमा की तुलना करें :) वही शुद्ध प्रभाव – kd7

+0

मेरे पास दोनों वातावरणों तक पूर्ण पहुंच है, लेकिन विजुअल स्टूडियो से नहीं: लाइव वर्चुअल सर्वर पर होस्ट किया गया है और (ठीक है) लॉक किया गया है बाहरी पहुंच को रोकने के लिए नीचे। दो डेटाबेस बनाना एक ओवरहेड का थोड़ा सा है लेकिन अभी भी एक और विकल्प है। –

0

स्क्रिप्ट के साथ करना मुश्किल है - क्योंकि एसक्यूएल क्रम में तालिकाओं/वस्तुओं को उत्पन्न करने के लिए प्रवृत्त होगा जो वर्णमाला क्रम के बजाए इसे समझ में आता है (जैसे निर्भरता आदेश)।

जब आप डेटाबेस की तुलना करना प्रारंभ करते हैं तो अन्य जटिलताएं होती हैं - उदाहरण के लिए बाधा वस्तुओं के नाम यादृच्छिक रूप से जेनरेट किए जा सकते हैं, इसलिए प्रत्येक बाधा में एक ही बाधा के अलग-अलग नाम हो सकते हैं।

आपका सबसे अच्छा शर्त शायद विकल्प है (4) मुझे डर लग रहा ... Red Gate Sql Compare के evaulation प्रतिलिपि - 30 दिनों के लिए नि: शुल्क। मैंने इसका इस्तेमाल बहुत अधिक किया है और इससे कोई फर्क नहीं पड़ता कि अंतर क्या है। इसके बाद यह आपको दो स्कीमा को सिंक में लाने के लिए एक स्क्रिप्ट उत्पन्न करेगा।

संपादित करें: या दृश्य स्टूडियो 2010 अंतिम (या प्रीमियम) यह जाहिरा तौर पर कर सकते हैं - KD7 के जवाब देखने

+0

बनाम 2010 प्रीमियम में यह अंतर्निहित है, मुझे यकीन है कि कुछ अन्य संस्करणों के साथ-साथ – kd7

+0

मुझे यह नहीं पता था, यही कारण है कि मैंने आपका जवाब ऊपर उठाया:) – codeulike

+0

हाँ, मैंने कभी भी इस पर अधिक प्रेस नहीं सुना, जब सुखद आश्चर्य हुआ मैंने इसे वहां देखा – kd7

2

Red_gate के SQLCompare इस के लिए उपयोग करने के लिए, हर एक पैसा लायक सबसे अच्छी बात है।

0

मुझे एक समान समस्या थी। मेरा डेटाबेस एसक्यूएल सर्वर 2008 है। मुझे एहसास हुआ कि, यदि मैं ऑब्जेक्ट एक्सप्लोरर विवरण के माध्यम से स्क्रिप्ट उत्पन्न करता हूं, तो मुझे वह आदेश मिलता है जिसे मैं नाम देख रहा हूं। इस तरह से मैं 2 डेटाबेस की तुलना करने और उनके मतभेदों को खोजने में सक्षम था।

इस के साथ ही समस्या यह है कि मैं टेबल/संग्रहित प्रक्रियाओं के लिए अलग लिपियों बाहर लेना पड़ा है चलाता है आदि

लेकिन हम आसानी से तुलना कर सकते हैं।

1

आप पता लगाने के लिए कुछ हद तक WinMerge उपयोग कर सकते हैं लाइनों कहीं पाए जाते हैं, तो जब दो उत्पन्न लिपियों की तुलना। मुझे लगता है कि यह सरल मामलों में काम करता है।

WinMerge v2.12.4.0 यूनिकोड का उपयोग करना। नीचे इन्हें हाइलाइट करने के लिए रंगीन उपयोग पर ध्यान दें।

3,6:> तुलना करें "चले गए ब्लॉक का पता लगाना सक्षम" -

यहाँ संपादित करें के लिए मदद है -> विकल्प। स्थानांतरित ब्लॉक पहचान अक्षम (डिफ़ॉल्ट) सक्षम करें: WinMerge पता नहीं है कि अंतर स्थानांतरित होने के कारण अंतर कब हैं।

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

उदाहरण के लिए, तुलना में स्थान फलक विवरण और विलय फ़ाइलों को देखें।

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

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