6

मैं SQL Server 2008 R2 का उपयोग करता हूं और मास्टर टेबल और विस्तार तालिका को एक साथ विभाजित करना चाहता हूं। मैं मास्टर टेबल में MasterTypeID फ़ील्ड द्वारा विस्तार तालिका को कैसे विभाजित कर सकता हूं।विभाजन मास्टर विवरण तालिका

मेरे विभाजन समारोह है:

CREATE PARTITION FUNCTION MasterTypeFN(int) 
AS 
RANGE LEFT FOR VALUES (1,2,3) 

मेरे विभाजन स्कीमा है:

CREATE PARTITION SCHEME MasterTypeScheme 
AS 
PARTITION MasterTypeFN 
TO ([FG1], [FG2], [FG3], [PRIMARY]) 

मेरे मास्टर तालिका संरचना है:

CREATE TABLE [dbo].Master 
(
    [MasterID] [int] NOT NULL, 
    [MasterTypeID] [int] NOT NULL, 
    ... 
) 
ON MasterTypeScheme (MasterTypeID) 

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

CREATE TABLE [dbo].Detail 
(
    [DetailID] [int] NOT NULL, 
    [MasterID] [int] NOT NULL, 
    ... 
) 

मैं मास्टर विभाजन के संबंध में विस्तार तालिका को विभाजित करना चाहता हूं। दूसरे शब्दों में मैं एक फ़ाइल समूह में मास्टर टेबल रिकॉर्ड और संबंधित विवरण सहेजना चाहता हूं।

+0

क्या ये टेबल HEAP होने जा रहे हैं या क्या उनके पास क्लस्टर्ड इंडेक्स होगा? यदि वे क्लस्टर्ड टेबल हैं, तो विभाजन कॉलम को क्लस्टर इंडेक्स या प्राथमिक कुंजी का हिस्सा होना होगा। –

उत्तर

2

आपको विस्तार तालिका में MasterTypeID कॉलम परिभाषित करना चाहिए और इस कॉलम को अपडेट करने के लिए अनुमति को परिभाषित करना चाहिए। तालिका तालिका तालिका कॉलम Detail तालिका में कॉलम को सिंक करने के लिए Master तालिका पर ट्रिगर बनाएं।

1

आप जो चाहते हैं संभव है। आपको के मान को Detail तालिका की प्रत्येक पंक्ति में कॉपी करने की आवश्यकता है ताकि विभाजन फ़ंक्शन Detail पर लागू किया जा सके।

नया कॉलम Detail.MasterTypeID बनाएं और उस कॉलम को उचित रूप से भरें। या तो अपने आवेदन कोड में या डेटाबेस में एक ट्रिगर का उपयोग कर।

कॉलम सही ढंग से भरने के बाद आप विभाजन फ़ंक्शन को लागू कर सकते हैं।

+0

आपके उत्तर के लिए धन्यवाद। मैं 'Detail.MasterTypeID' और' Master.MasterTypeID' को एक साथ कैसे सिंक्रनाइज़ कर सकता हूं? –

+0

'Detail.MasterTypeID' केवल कॉलम पढ़ा जाना चाहिए और केवल 'Master.MasterTypeID' कॉलम बदलते समय अपडेट होना चाहिए। 'Detail.MasterTypeID' भी संबंधित 'Master.MasterTypeID' के बराबर होना चाहिए और' Master.MasterTypeID' बदलते समय स्वचालित रूप से बदला जाना चाहिए। –

+0

हाँ बिल्कुल सही। मेरा सुझाव है कि आप 'मास्टर' तालिका 'INSERT, अद्यतन, हटाएं' के लिए 'आफ्टर' ट्रिगर बनाएं। आप उस ट्रिगर में 'INSERTED' और' हटाए गए छद्म-तालिकाओं का उपयोग तदनुसार सभी 'विवरण' पंक्तियों को अपडेट करने के लिए कर सकते हैं। यहां टाइप करने के लिए यह बहुत अधिक कोड है, लेकिन यह सीधे आगे है। – usr

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