मैं एक तालिका के लिए पृष्ठों की एक सूची प्राप्त करने का प्रयास कर रहा हूं जिसमें ROW_OVERFLOW_DATA की पंक्तियाँ हैं। मुझे sys.db_db_database_page_allocations
अनिर्दिष्ट DMV से आवंटित पृष्ठों की सूची मिल सकती है , हालाँकि, उस DMV के आउटपुट में सूचीबद्ध ROW_OVERFLOW_DATA पृष्ठ नहीं हैं। क्या कोई अन्य DMV है जिसे मैं आसानी से ढूँढ नहीं सकता हूँ?
न्यूनतम, पूर्ण, और (उम्मीद है!) पुष्टि योग्य उदाहरण:
USE tempdb;
IF OBJECT_ID(N'dbo.t', N'U') IS NOT NULL
DROP TABLE dbo.t;
GO
CREATE TABLE dbo.t
(
rownum int NOT NULL IDENTITY(1,1)
PRIMARY KEY CLUSTERED
, on_row_data varchar(30) NOT NULL
DEFAULT ('on_row_data')
, off_row_data varchar(MAX) NOT NULL
DEFAULT REPLICATE('A', 20000) --PLENTY BIG ENOUGH!
) WITH (DATA_COMPRESSION = NONE); --not compressing those pages!
INSERT INTO dbo.t DEFAULT VALUES;
DECLARE @ObjectID int = (SELECT o.object_id FROM sys.objects o WHERE o.name = 't');
DECLARE @PageID int;
DECLARE @PageTypeDesc varchar(100);
SELECT FileID = dpa.allocated_page_file_id
, PageID = dpa.allocated_page_page_id
, PageTypeDesc = dpa.page_type_desc
FROM sys.dm_db_database_page_allocations(DB_ID(), @ObjectID, NULL, NULL, 'DETAILED') dpa
आउटपुट जैसा दिखता है:
╔════════╦════════╦══════════════╗ ║ फाइलआईडी ID पेजआईडी T पेजटाइपडेस ║ ╠════════╬════════╬══════════════╣ ║ 1 ║ 1598 AM IAM_PAGE ║ ║ 3 ║ 105368 ║ DATA_PAGE ║ ║ 3 ║ 105369 ║ NULL ║ ║ 3 ║ 105370 ║ NULL ║ ║ 3 ║ 105371 ║ NULL ║ ║ 3 ║ 105372 ║ NULL ║ ║ 3 ║ 105373 ║ NULL ║ ║ 3 ║ 105374 ║ NULL ║ ║ 3 ║ 105375 ║ NULL ║ ╚════════╩════════╩══════════════╝
जो समझ में आता है, लापता ROW_OVERFLOW_DATA पृष्ठ के अलावा। हमारे पास एक एकल सूचकांक आवंटन मानचित्र पृष्ठ है, और 8KB डेटा पृष्ठों का पूर्ण विस्तार-मूल्य है, जिसमें से केवल एक ही उन्हें आवंटित किया गया है।
इसी प्रकार, यदि मैं sys.fn_PhysLocCracker
उस पृष्ठ को दिखाने के लिए अनिर्धारित फ़ंक्शन का उपयोग करता हूं जहां प्रत्येक पंक्ति मौजूद है, जैसे:
SELECT *
FROM dbo.t
CROSS APPLY sys.fn_PhysLocCracker(%%PHYSLOC%%)
मैं केवल DATA_PAGE
सूचीबद्ध देखता हूं :
╔════════╦═════════════╦═════════════════════╦════ ═════╦═════════╦═════════╗ ║ पंक्तिबद्ध _ on_row_data row off_row_data _ file_id ║ page_id _ slot_id ║ ╠════════╬═════════════╬═════════════════════╬════ ═════╬═════════╬═════════╣ ║ 1 ║ on_row_data ║ AAAAAAAAAAAAAAAAAAAAA AA 3 ║ 105368 36 0 ║ ╚════════╩═════════════╩═════════════════════╩════ ═════╩═════════╩═════════╝
इसी तरह, अगर मैं उपयोग करता DBCC IND(database, table, index)
हूं तो मैं केवल सूचीबद्ध दो पृष्ठ देखता हूं:
DBCC IND (tempdb, t, 1);
आउटपुट:
╔═════════╦═════════╦════════╦════════╦═══════════ ═╦═════════╦═════════════════╦════════════════════ ═╦════════════════╦══════════╦════════════╦═══════ ══════╦═════════════╦═════════════╦═════════════╦═ ═╗ ║ PageFID P पेजपिड F IAMFID ID IAMPID ID ऑब्जेक्ट ║ इंडेक्सआईडी ║ पार्टिशननंबर ║ पार्टिशनिड ║ iam_chain_type T पेजपाइप ║ IndexLevel ║ NextPageFID ║ नेक्स्टपेजेज ║ PrePPageFID ║ पेजपिड ║ ╠═════════╬═════════╬════════╬════════╬═══════════ ═╬═════════╬═════════════════╬════════════════════ ═╬════════════════╬══════════╬════════════╬═══════ ══════╬═════════════╬═════════════╬═════════════╬═ ═╣ ║ 1 ║ 1598 ║ NULL ║ NULL 95 2069582411 ║ 1 89 1 87 6989586877272752128 row इन-पंक्ति डेटा ║ 10 ║ NULL ║ 0 ║ 0 ║ 0 ║ 0 ║ ║ ║ ║ 3 ║ 105368 ║ 1 ║ 1598 95 2069582411 ║ 1 89 1 87 6989586877272752128-इन-पंक्ति डेटा ║ 1 ║ 0 ║ 0 ║ 0 ║ 0 ║ 0 ║ ║ ║ ╚═════════╩═════════╩════════╩════════╩═══════════ ═╩═════════╩═════════════════╩════════════════════ ═╩════════════════╩══════════╩════════════╩═══════ ══════╩═════════════╩═════════════╩═════════════╩═ ═╝
यदि मैं वास्तविक पृष्ठ सामग्री को DBCC PAGE
देखता हूं, तो इसका उपयोग ऐसा लगता है कि मुझे अभी भी कुछ दिखाई नहीं देता है कि किस पृष्ठ में ROW_OVERFLOW_DATA शामिल है - मुझे यकीन है कि यह वहां होना चाहिए, मुझे शायद यह नहीं पता है कि क्या देखना है:
DBCC PAGE (tempdb, 3, 105368 , 3) WITH TABLERESULTS;
परिणाम यहाँ फिट करने के लिए बहुत बड़े हैं, अगर मैं मेमोरी डंप पंक्तियों को शामिल करता हूं, लेकिन यह हेडर आउटपुट है:
╔══════════════╦════════════════════════════════╦═ ══════════════════════════════╦═══════════════════ ════════════╗ ║ पेरेंटऑब्जेक्ट ║ ऑब्जेक्ट ║ फील्ड ║ वैल्यू ject ╠══════════════╬════════════════════════════════╬═ ══════════════════════════════╬═══════════════════ ════════════╣ ║ BUFFER: UF BUF @ 0x000002437E86D5C0 ║ bpage 31 0x000002431A8A2000: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 sh bhash 0000 0x00000000000000000000: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 p bpageno: (3: 105368): ║ BUFFER: UF BUF @ 0x000002437E86D5C0 d bdbid: 2: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 re breferences ER 0: ║ खरीदार: UF BUF @ 0x000002437E86D5C0 c bcputicks ER 0: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 ample bsampleCount: 0: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 U bUse1 ║ 63172: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 at bstat ║ 0x10: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 ║ ब्लॉग 12 0x212121cc: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 xt bnext 0000 0x00000000000000000000: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 D bDirtyContext te 0x000002435DA77160: ║ BUFFER: UF BUF @ 0x000002437E86D5C0 at bstat2 ║ 0x0: ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_pageId 105 (3: 105368) ER ║ पेज हेडर: @ पेज @ ०x000002431A8A2000 HE m_headerVersion ║ 1 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_type ER 1 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_typeFlagBits B 0x0 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_level ER 0 AD ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_flagBits ║ 0xc000 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_objId (AllocUnitId.idObj) 20 3920762 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_indexId (AllocUnitId.idInd) ║ 512 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE मेटाडेटा: AllocUnitId 115 144115445026914304 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE मेटाडेटा: विभाजन I 6989586877272752128 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE मेटाडेटा: IndexId ER 1 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE मेटाडेटा: ObjectId 11 2069582411 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_prevPage 0 (0: 0) ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_nextPage 0 (0: 0) ER ║ पेज हेडर: @ पेज @ ०x000002431A8A2000 len pminlen ║ AD AD ║ पेज हेडर: @ पेज @ 0x000002431A8A2000 HE m_slotCnt ║ 1 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_freeCnt ║ 66 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_freeData ║ 8124 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_reservedCnt AD 0 ║ ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_lsn 4 (36: 47578: 1) ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_xactReserved ER 0 ║ ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_xdesId 0 (0: 0) ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_ghostRecCnt C 0 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE m_tornBits AD 0 ER ║ Page HEADER: @ पेज @ 0x000002431A8A2000 HE DB फ्रैग आईडी ║ 1 ER ║ PAGE HEADER: ocation आवंटन की स्थिति 3 GAM (3: 2) HE आवंटित ER ║ Page HEADER: Status आवंटन की स्थिति (SGAM (3: 3) OC आवंटित नहीं है ER ║ पेज का शीर्षक: ocation आवंटन की स्थिति (PFS (3: 105144) 40 0x40 आवंटित 0_PCT_FULL ER ║ Page HEADER: Status आवंटन की स्थिति (DIFF (3: 6) ED नहीं बदले गए ER ║ PAGE HEADER: ocation आवंटन की स्थिति 3 ML (3: 7) _L MIN_LOGGED AD नहीं ║ पेज हेडर: ot स्लॉट ० ऑफ़सेट ०x६० लंबाई ║०२ER HE रिकॉर्ड प्रकार IM PRIMARY_RECORD ER ║ PAGE HEADER: ot स्लॉट 0 ऑफसेट 0x60 लंबाई 8028 HE रिकॉर्ड गुण HE NULL_BITMAP VARIABLE_COLUMNS ER ║ PAGE HEADER: ot स्लॉट 0 ऑफसेट 0x60 लंबाई 8028 HE रिकॉर्ड आकार 28 8028 AD ╚══════════════╩════════════════════════════════╩═ ══════════════════════════════╩═══════════════════ ════════════╝