1

I am using SQL Server version: Microsoft SQL Server 2012 - 11.0.2100.60 (X64).

I created a single table containing one and only one integer-valued column. I then added one and only one row to the table.

CREATE DATABASE SQLServerInternals;
GO

USE SQLServerInternals;
GO

CREATE TABLE page_header
(
    c1 INT IDENTITY NOT NULL
) ON [PRIMARY];
GO

INSERT INTO page_header DEFAULT VALUES;
GO 

DBCC IND(SQLServerInternals,page_header,1);
GO
DBCC TRACEON(3604);
GO
DBCC PAGE (SQLServerInternals,1,231,2);
GO

Here is the output from DBCC PAGE.

Does anyone know what the DB Frag ID = 1 means and whether it is the value 0x0100 that I see in bytes 64-65? I assume that the value is at most a SMALLINT type. I assume that the remaining bytes are for "future use".

enter image description here

4
  • I've not stumbled upon "DB Frag ID" before, it would seem that's new to 2012. However, looking at the header for 2008R2 and earlier, only bytes 0-63 are in use: github.com/improvedk/OrcaMDF/blob/master/src/OrcaMDF.Core/… Thus, if they added a new property, it would make sense for it to be in bytes 64+ Jan 15, 2013 at 23:56
  • Altering the 65th byte on the page in a test database doesn't seem to affect anything reported by DBCC PAGE. It still says DB Frag ID = 1 regardless of what I set it to Jan 16, 2013 at 0:00
  • @MarkS.Rasmussen I too have never seen "DB Frag ID" before. I assume it has nothing to do with index fragmentation. Maybe database fragment...? I have no clue.
    – ooutwire
    Jan 16, 2013 at 2:47
  • @MarkS.Rasmussen I just came across this connect item that points out that sys.sysrscols used to have a column called dbfragid but this no longer exists in 2012. So I wonder if it was always there. Just changed location. Nov 29, 2013 at 13:02

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.