SQL Server 2008 R2 विभाजन - एक ही फाइलग्रुप, 1 फ़ाइल, 2 पार्टीशन / न्यूट्रस - मदद


10

यह एसक्यूएल सर्वर में विभाजन के लिए मेरा पहला कदम है, मैंने ब्रेंट ओजर गाइड से सीखा जो शानदार है :)

कुछ समय मैं एक अजीब परिदृश्य में भाग गया; जब मैं दौड़ता हूं:

SELECT *
FROM ph.FileGroupDetail
ORDER BY partition_number
Go

एक ही फाइलग्रुप 2 अलग-अलग विभाजन_दोनों के साथ दो बार दिखा रहा है, एक सीमा मूल्य के साथ अंत में 1 सही ढंग से, दूसरा एक शून्य रेंज_वल्यू के साथ शुरू में।

विस्तार छवि के लिए यहां क्लिक करें

यहाँ छवि विवरण दर्ज करें

सवालों के जोड़े:

  1. यह कैसे हो रहा है, मैं कहां गलत हो गया हूं?

  2. मैं इस मुद्दे को कैसे सुलझाऊं, इसका मतलब है कि शुरुआत में कैसे छुटकारा पाएं क्योंकि मेरे पास शुरुआत में एक खाली विभाजन है।

मैंने फ़ाइल को हटाने की कोशिश की है (काम तब किया जब यह खाली था) और फ़ाइल समूह, लेकिन फ़ाइल समूह ने कहा कि इसे हटाया नहीं जा सकता।

क्या कोई समझा सकता है कि यह कैसे हुआ और विभाजन 2 प्रविष्टि से कैसे छुटकारा पाया जाए?


3
स्टीव, क्या आप अपनी विभाजन योजना और कार्य पोस्ट कर सकते हैं?
स्यूडो टॉड

@steve - वास्तव में उस विभाजन योजना और फ़ंक्शन को पोस्ट करने के लिए उपयोगी होगा जैसा कि Gizmo ने अनुरोध किया था।
थ्रोन्क

1
क्या आप sys.partitions से विभाजन_ को भी उजागर कर सकते हैं?
user_0

जवाबों:


3

परिणाम कुछ बिंदु पर इंगित करते हैं एक स्पष्ट NULL विभाजन सीमा को फ़ंक्शन में जोड़ा गया था जब विभाजन योजना NEXT USEDफ़ाइलग्रुप DailyAlbertFG30 पर सेट की गई थी। इसके अलावा, मैं DailyAlbertFG2 का उपयोग नहीं देखता। शायद उस फ़ाइलग्रुप पर एक बार एक विभाजन था जिसे बाद में विलय कर दिया गया था।

नीचे एक स्क्रिप्ट है जो दिखाता है कि NULL सीमा के साथ FG30 विभाजन कैसे बनाया जा सकता है। NULL सीमा को गलती से जोड़ा जा सकता है।

CREATE PARTITION FUNCTION DailyAlbertPF1 (datetime2(3)) AS RANGE RIGHT FOR VALUES();
GO
CREATE PARTITION SCHEME DailyAlbertPS1 AS PARTITION DailyAlbertPF1 ALL TO ([DailyAlbertFG1]);
GO
CREATE TABLE dbo.FactAgentAlbertPortalSessionEntries
    (
      DateTimeColumn datetime2(3)
    )
ON  DailyAlbertPS1(DateTimeColumn);
GO

DECLARE @FileGroupNumber int = 1;
DECLARE @DateTimeBoundary datetime2(3) = '2015-04-15T00:00:00.000';
DECLARE @SQL nvarchar(MAX);
WHILE @DateTimeBoundary <= '2015-05-14T00:00:00.000'
BEGIN
    SET @SQL = N'ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG' + CAST(@FileGroupNumber AS nvarchar(5)) + N';';
    EXEC(@SQL);
    ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
    SET @DateTimeBoundary = DATEADD(day, 1, @DateTimeBoundary);
    SET @FileGroupNumber += 1;
END;
--add NULL boundary on DailyAlbertFG30
SET @DateTimeBoundary = NULL;
ALTER PARTITION SCHEME DailyAlbertPS1 NEXT USED DailyAlbertFG30;
ALTER PARTITION FUNCTION DailyAlbertPF1() SPLIT RANGE(@DateTimeBoundary);
GO

0
  1. मुझे नहीं पता। यह कोई असामान्य मामला नहीं है। आप स्वतंत्र रूप से फ़ाइल समूह के विभाजन को असाइन कर सकते हैं। इसका 1: 1 होना जरूरी नहीं है। हो सकता है कि आपने गलती से गलत FG का पुनर्निर्माण कर लिया, या आपके पास थोड़े समय के लिए एक बुरा कॉन्फ़िगरेशन था। इस अनियमितता के बारे में चिंता करने की कोई बात नहीं है , लेकिन आप निश्चित रूप से इसे साफ कर सकते हैं।
  2. आप उनमें से एक को दूसरे में विलय करके खाली विभाजन से छुटकारा पा सकते हैं। यह कैसे करना है पर वेब पर महान मार्गदर्शक हैं। इस मामले में ऐसा करना और तुरंत करना आसान है। आप विभाजन को एक वांछित FG में बदल कर उनका पुनर्निर्माण भी कर सकते हैं। खाली विभाजन का पुनर्निर्माण तत्काल होता है।

जब आप सफाई करते हैं और आप खाली FG पाते हैं तो आप उन्हें भी छोड़ सकते हैं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.