2009-04-03 14 views
18

में किसी तालिका को किसी विशेष फ़ाइल समूह में कैसे स्थानांतरित किया जाए, मैंने अभी एक माध्यमिक फ़ाइल समूह बनाया है और कुछ तालिकाओं को इसके ऊपर ले जाना चाहते हैं और फिर इसे केवल पढ़ने के लिए चाहते हैं।SQL तालिका 2008

मुझे यकीन नहीं है कि यह कैसे करें?

क्या मैं सिर्फ ALTER blah blah TO MyFileGroup का उपयोग करता हूं?

उत्तर

25

कुछ इस तरह की मदद करनी चाहिए:

CREATE UNIQUE CLUSTERED INDEX PK_YourTableName 
    ON dbo.YourTableName(YourPKFields) 
    WITH (DROP_EXISTING = ON) ON [NewFilegroup] 
+0

I ऐसा लगता है कि यह काम करता है। जब मैंने टेबल-> गुण-> स्टोरेज की जांच की, तो यह 'फाइल समूह' को मेरा नया फ़ाइल समूह (ऊपर से) के रूप में दिखाता है लेकिन पाठ फ़ाइल समूह == प्राथमिक? क्या यह सही है? या यह द्वितीयक fielgr द्वारा भी होना चाहिए oup (उदाहरण के लिए। NewFilegroup)। ? –

+3

यह एक अलग कहानी है - जब आप तालिका बनाते हैं तो आप टेक्स्ट/एनटीएक्स्ट फ़ील्ड्स के लिए एक फ़ाइल समूह निर्दिष्ट कर सकते हैं, लेकिन पुस्तकें ऑनलाइन कहती हैं: "तालिका बनाने में निर्दिष्ट किसी भी बड़े मूल्य कॉलम डेटा का संग्रहण बाद में बदला नहीं जा सकता है।" :-( –

+0

सही, तालिका के निर्माण के बाद आप फ़ाइल समूह/टेक्स्ट डेटा के लिए फ़ाइल समूह को नहीं बदल सकते हैं। आपको डेटा को सही फ़ाइल समूहों का उपयोग करके एक नई तालिका में स्थानांतरित करने की आवश्यकता होगी, फिर उस तालिका को पुराने टेबल नाम में बदलने के लिए नाम बदलें टेक्स्ट/NTEXT फ़ाइल समूह। – mrdenny

7

दो तरीके हैं; एसएसएमएस से एक और दूसरा टीएसक्यूएल का उपयोग कर।

एसक्यूएल सर्वर से 2008 पुस्तकें ऑनलाइन:

एक अलग filegroup या विभाजन योजना

  • वस्तु Explorer में करने के लिए एक मौजूदा सूचकांक जाने के लिए, एसक्यूएल का एक उदाहरण से कनेक्ट सर्वर डेटाबेस इंजन और फिर उस उदाहरण का विस्तार करें।

  • डेटाबेस का विस्तार करें, डेटाबेस का विस्तार करें जिसमें विशिष्ट अनुक्रमणिका के साथ तालिका है, और उसके बाद तालिकाएं विस्तृत करें।

  • उस तालिका का विस्तार करें जिसमें अनुक्रमणिका संबंधित है और फिर इंडेक्स का विस्तार करें।

  • स्थानांतरित करने के लिए इंडेक्स पर राइट-क्लिक करें और फिर गुण चुनें।

  • इंडेक्स गुण संवाद बॉक्स पर, संग्रहण पृष्ठ का चयन करें।

  • फ़ाइल समूह का चयन करें जिसमें अनुक्रमणिका को स्थानांतरित किया जाए।

आप सूचकांक गुण संवाद बॉक्स का उपयोग द्वारा एक अनूठा या प्राथमिक कुंजी बाधा का उपयोग कर बनाई अनुक्रमित नहीं ले जा सकते। इन अनुक्रमित जाने के लिए, आप फिर से बनाने वांछित ALTER तालिका का उपयोग कर filegroup पर बाधा करने की जरूरत है ड्रॉप बाधा विकल्प के साथ ALTER तालिका (Transact-SQL) का उपयोग कर बाधा ड्रॉप और फिर (Transact-SQL) ADD CONSTRAINT विकल्प के साथ।

यदि तालिका या अनुक्रमणिका विभाजित है, विभाजन योजना का चयन करें जिसमें अनुक्रमणिका को स्थानांतरित करने के लिए।

[पूर्व एसक्यूएल सर्वर 2008: एक अलग filegroup (SSMS)

  • डेटाबेस का विस्तार करें, तालिका युक्त डेटाबेस विस्तृत करें और फिर तालिकाओं पर क्लिक करें पर एक मौजूदा टेबल रखने के लिए।
  • विवरण फलक में, तालिका पर राइट-क्लिक करें, और उसके बाद डिज़ाइन तालिका क्लिक करें।
  • किसी भी कॉलम पर राइट-क्लिक करें, और उसके बाद गुणक्लिक करें।
  • तालिका टैब पर, तालिका फ़ाइल समूह सूची में, फ़ाइल समूह को तालिका में रखने के लिए चुनें।
  • वैकल्पिक रूप से, टेक्स्ट फ़ाइल समूह सूची में, कोई फ़ाइल समूह चुनें जिस पर कोई टेक्स्ट, छवि और टेक्स्ट कॉलम रखें। ]

एक अधिक प्रभावी तरीके से

मेज पर एक क्लस्टर सूचकांक तैयार करना है। तालिका पहले से ही एक क्लस्टर सूचकांक है, तो आप का उपयोग बनाएं सूचकांक आदेश के DROP_EXISTING खंड के साथ क्लस्टर सूचकांक पुन: बनाने और एक विशेष filegroup में ले जाना आसान कर सकते हैं। जब किसी तालिका में क्लस्टरर्ड इंडेक्स होता है, तो का पत्ता स्तर तालिका का सूचकांक और डेटा पेज अनिवार्य रूप से एक और समान हो जाता है। मेज, मौजूद है जहाँ क्लस्टर सूचकांक मौजूद होना चाहिए, इसलिए यदि आप बना सकते हैं या पुन: एक क्लस्टर सूचकांक-रखकर एक विशेष filegroup-तुम रूप में अच्छी तरह नया filegroup को तालिका जाने पर सूचकांक।

क्रेडिट: Brian Moran

आप (पुन: बनाने या) क्लस्टर सूचकांक पर खंड के लिए नए filegroup निर्दिष्ट करने और उस मेज (डेटा) पर आ जाएगा बना सकते हैं। लेकिन अगर आपके पास नॉनक्स्टर्ड इंडेक्स हैं और उन्हें अन्य फाइल ग्रुप पर चाहते हैं तो आपको ऑन क्लॉज में नया फाइल ग्रुप निर्दिष्ट करने और उन्हें फिर से बनाना होगा। Ref

+0

>> राइट विशाल लॉग फाइल बनाने के बिना सिस्टम पर लोड अधिक नियंत्रण की अनुमति देता है किसी भी कॉलम पर क्लिक करें, और फिर गुण क्लिक करें। नहीं, ऐसा करने का कोई विकल्प नहीं :(स्क्रीन शॉट? –

+0

एसक्यूएल 2008 में chnaged होना चाहिए, TSQL रास्ता अभी भी काम करना चाहिए। जब ​​मैं यह पता लगाता हूं कि विकल्प कहां स्थानांतरित हो गया है तो मैं अपडेट करूंगा! –

+0

हम्म .... क्या आप पोस्ट कर सकते हैं कृपया टीएसक्यूएल? (मैं निम्नलिखित कोशिश कर रहा हूं (और यह काम नहीं कर रहा है): - सूचकांक PK_TableFooId को dbo.NorthAmerican_Countries (id) पर DROP_EXISTING के साथ SpatialDataReadOnly –

0

मैं मार्क के साथ सहमत हैं। पुनर्निर्माण क्लस्टर अच्छी तरह से काम करता है और ज्यादा Tasks- की तुलना में तेजी है> सिकोड़ें database-> फ़ाइलों>Empty file by migrating data to another file.

अनुक्रमित बनाना individualy select * into [your.new.table.] from ..... से