2010-07-22 13 views
14

क्या SQL सर्वर डेटाबेस आरेख को किसी अन्य सर्वर पर कॉपी करने का कोई तरीका है?एसक्यूएल सर्वर 2005, किसी अन्य सर्वर पर डेटाबेस आरेख की प्रतिलिपि कैसे करें

मैं this मिल गया है और यह छबीला संशोधित केवल एक ही चित्र की प्रतिलिपि करने के:

INSERT INTO dbB.dbo.sysdiagrams 
SELECT [name],[principal_id],[version],[definition] 
FROM dbA.dbo.sysdiagrams 
Where name = 'MyDiagramName' 

लेकिन मैं एक और सर्वर (उत्पादन करने के लिए विकास) पर प्रतिलिपि की जरूरत है।

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

इसलिए मुझे किसी भी फ़ाइल को किसी अन्य फ़ाइल पर पुनर्स्थापित करने के लिए आरेख परिभाषा को 'सहेजने' की आवश्यकता है।

उत्तर

5

बस this solution पाया व्याख्या करेगा।

इस आलेख में, संग्रहित प्रक्रिया बनाने के लिए कोड है जो आरेख को फिर से बनाने के लिए SQL सर्वर स्क्रिप्ट उत्पन्न करता है। इसलिए आप संग्रहित प्रक्रिया के आउटपुट को एक .SQL फ़ाइल में सेव करते हैं और इसे दूसरे सर्वर पर चलाते हैं।

समस्या एक डालने/अद्यतन क्वेरी में इसका उपयोग करने में सक्षम होने के लिए हेक्स में वर्बिनरी टू स्ट्रिंग (वर्चर) को परिवर्तित करना है। लेकिन यह लिंक में अच्छी तरह से समझाया गया है ...

-1
+0

यह एक 'अस्थायी तालिका' का उपयोग करें। जो किसी अन्य सर्वर परिदृश्य के लिए काम नहीं करता है। – DavRob60

+0

क्या आपने कभी लिंक सर्वर का उपयोग किया है? – greektreat

+0

हां, लेकिन मैं इसे बिना करना चाहता हूं, यह सवाल का हिस्सा है। – DavRob60

2

पहला: Destination Server के अंदर Source Server से एक लिंक सर्वर बनाएं।

लिए Link Server उपयोग this Link

दूसरा बनाने के लिए: का प्रयोग करें इस

USE DestinationDatabase 

DELETE sysDiagrams 
WHERE name IN (SELECT name 
       FROM  <LinkServerName>.SourceDatabase.dbo.sysDiagrams) 

SET IDENTITY_INSERT sysDiagrams ON 

INSERT sysDiagrams 
    (name , 
     principal_id , 
     diagram_id , 
     version , 
     definition 
    ) 
    SELECT name , 
      principal_id , 
      diagram_id , 
      version , 
      definition 
    FROM <LinkServerName>.SourceDatabase.dbo.sysDiagrams 

SET IDENTITY_INSERT sysDiagrams OFF 
+0

मैंने इस प्रश्न में निर्दिष्ट किया है कि मैं एक लिंक सर्वर का उपयोग नहीं करना चाहता क्योंकि आरेख को अपग्रेड स्क्रिप्ट में शामिल करने की आवश्यकता है। फिर भी धन्यवाद। – DavRob60

+0

लिंक सर्वर के खिलाफ ओपन डेटासोर्स का उपयोग करें। –

+1

आपको बस यह नहीं मिला। क्या होगा यदि गंतव्य सर्वर स्रोत सर्वर को "नहीं" देखता है? – DavRob60

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