2009-03-16 17 views
16

में एक तालिका से दूसरे तालिका में इंडेक्स को कॉपी करने के लिए मुझे इंडेक्स को एक टेबल से दूसरी तालिका में कॉपी करने की आवश्यकता है। इंडेक्स के बहुत सारे हैं और मैं उन्हें स्क्रैच से फिर से बनाना नहीं चाहता हूं। किसी भी तरह से त्रुटि प्रवण लगता है।एसक्यूएल सर्वर

मैं संरचना

SELECT * INTO [BackupTable] FROM [OriginalTable] 

का उपयोग कर नकल की है लेकिन यह अनुक्रमित नकल नहीं करता है, बाधाओं, चलाता आदि

किसी को भी ऐसा करने के तरीके पता है?

उत्तर

42

क्या आप इंडेक्स परिभाषा की प्रतिलिपि बनाना चाहते हैं?

तो फिर तुम सूचकांक इंजीनियर आदि Microsoft SQL प्रबंधन उपकरण एसक्यूएल प्रबंधन स्टूडियो तालिका सूची में एक तालिका नाम पर

सीधे शब्दों में राइट क्लिक में "स्क्रिप्ट" विकल्प का उपयोग स्क्रिप्ट तालिका के रूप में उल्टा कर सकते हैं, ट्रिगर और " "और फिर" "

आप सूचकांक डेटा कॉपी नहीं कर सकते के रूप में यह तुम हो कि सूचकांक

पहले जांच के भौतिक भंडारण से संबंधित है" के लिए बनाएं उपकरण/विकल्प/एसक्यूएल सर्वर ऑब्जेक्ट एक्सप्लोरर/स्क्रिप्टिंग/स्क्रिप्ट इंडेक्स "पर सेट" ट्रू "। यह एसक्यूएल प्रबंधन उपकरण के कुछ संस्करण (धन्यवाद मार्क)

enter image description here

1

मैं SQL सर्वर से विशेष रूप से परिचित नहीं हूं, हालांकि डेटाबेस डेटाबेस को परिभाषित किया गया है और अन्य डेटाबेस में उपयोग किया जाता है, तो मैं कहूंगा कि डेटा कॉपी करने या चयन INTO का उपयोग करके ऐसा करने का कोई तरीका नहीं है।

इंडेक्स को तालिका संरचना के हिस्से के रूप में परिभाषित करने की आवश्यकता है और तालिका में मौजूद किसी भी मौजूदा डेटा के लिए जेनरेट करने की आवश्यकता है।

ऐसा करने का एकमात्र तरीका तालिका बनाने के बाद एक वैकल्पिक तालिका कथन का उपयोग करके CREATE तालिका विवरण के दौरान होता है।

डेटा के साथ काम करने के लिए विवरण तालिका परिभाषाओं के साथ काम करने के लिए अलग हैं इसलिए मुझे नहीं लगता कि इसके लिए कोई काम या शॉर्टकट होगा।

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

1

आप एक स्क्रिप्ट sysindexes में जानकारी का उपयोग बना सकते में गलत पर सेट है (या अपने संस्करण के आधार पर sys.indexes) सभी से बनाना इंडेक्स का, लेकिन चयन * चयन का उपयोग करके विदेशी और प्राथमिक कुंजी या किसी भी विस्तारित प्रोपर्टीज को भी नहीं उठाया जा रहा है। यदि आप 2000+ संस्करण का उपयोग कर रहे हैं, या डीटीएस यदि आप 2000 का उपयोग कर रहे हैं, तो आपको वास्तव में एसएसआईएस का उपयोग करना चाहिए, दोनों में इस तरह की प्रतिलिपि को सरल बनाने के लिए विज़ार्ड हैं। > के रूप में

SSIS Import Export

DTS Import Export

1

rightclick SSMS में सूचकांक और कर स्क्रिप्ट बनाने।

बदलें तालिका नाम और सूचकांक नाम और आप

9

सेट किया जाना चाहिए डिफ़ॉल्ट रूप से राइट क्लिक करें तालिका "बनाएँ" अनुक्रमणिका या चलाता, बस तालिका परिभाषा और बाधाओं शामिल नहीं है।

आप सही क्लिक कर सकते हैं डेटाबेस और क्लिक "कार्य" -> "स्क्रिप्ट उत्पन्न करें" जो आप इस

संपादित करने की अनुमति देगा: यह डिफ़ॉल्ट है लेकिन जैसा कि TFD का उल्लेख है यह बदला जा सकता है, शुक्र है ।

+1

मिलना चाहिए -1 केवल यदि आप "उपकरण/विकल्प/एसक्यूएल सर्वर ऑब्जेक्ट एक्सप्लोरर/पटकथा/स्क्रिप्ट इंडेक्स" स्थापित करने के लिए "गलत" है। क्या यह नई रिलीज में डिफ़ॉल्ट है? – TFD

+1

वैसे इसके बारे में कैसे। यह 2005 और 2008 आर 2 में स्पष्ट रूप से डिफ़ॉल्ट है (मैंने निश्चित रूप से इसे नहीं बदला है), और मैं इसे और अधिक आसानी से करने में सक्षम होने से बहुत खुश हूं। –

-1

आप विचार यहाँ

Sub CopyTemp(tblName As String, Optional WithIndex As Boolean = False) 
    Dim db As DAO.Database 
    Dim tDefOrig As DAO.TableDef 
    Dim tDefNew As DAO.TableDef 

    Dim idxOrig As DAO.Index 
    Dim idxNew As DAO.Index 
    Dim fld As DAO.Field 

    Dim tempName As String 

    tempName = "temp" & tblName 

    Set db = CurrentDb 
    db.Execute "Select * Into " & tempName & " From " & tblName 

    If WithIndex = True Then 
     Set tDefOrig = db.TableDefs(tblName) 
     Set tDefNew = db.TableDefs(tempName) 

     For Each idxOrig In tDefOrig.Indexes 
      Set idxNew = tDefNew.CreateIndex(idxOrig.Name) 
      With idxNew 
       For Each fld In idxOrig.Fields 
        .Fields.Append .CreateField(fld.Name) 
       Next 
       .Primary = idxOrig.Primary 
       .Unique = idxOrig.Unique 
      End With 
      tDefNew.Indexes.Append idxNew 
      tDefNew.Indexes.Refresh 
     Next 
    End If 

End Sub 
+1

एसओ में आपका स्वागत है! किसी अन्य उपयोगकर्ता के प्रश्न का उत्तर देने के लिए समय निकालने के लिए धन्यवाद; हालांकि, कृपया पढ़ें [जवाब कैसे दें] (http://stackoverflow.com/help/how-to-answer) और सुनिश्चित करें कि आप पूछे जा रहे प्रश्न का उत्तर दे रहे हैं। दुर्भाग्यवश, यह उत्तर बहुत उपयोगी नहीं है क्योंकि ओपी ने विशेष रूप से एक SQL सर्वर प्रश्न पूछा और किसी भी प्रोग्रामिंग भाषा या पुस्तकालय का उपयोग करने के बारे में कुछ भी नहीं कहा, इसलिए यह उत्तर लेखक को कोई समझ नहीं सकता है या उनकी स्थिति पर लागू नहीं हो सकता है। –

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