So, imagine I have a page that I intend to cause to split.
USE master ;
GO
IF DATABASEPROPERTYEX (N'Pages', N'Version') > 0
BEGIN
ALTER DATABASE Pages SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
DROP DATABASE Pages ;
END
GO
CREATE DATABASE Pages ;
GO
IF EXISTS(SELECT object_id FROM sys.objects WHERE name = 'PageSplit')
BEGIN
DROP TABLE PageSplit ;
END
USE Pages ;
GO
CREATE TABLE PageSplit
(
c1 INT IDENTITY
, c2 VARCHAR(2000) DEFAULT REPLICATE('b' , 1000)
) ;
GO
CREATE UNIQUE CLUSTERED INDEX CIX_c1
ON dbo.PageSplit
(
[c1] ASC
) ;
GO
INSERT INTO PageSplit DEFAULT VALUES ;
GO 7
DBCC IND(Pages,PageSplit,-1) ;
GO
DBCC TRACEON(3604) ;
GO
DBCC PAGE (Pages,1,231,3) ;
GO
-- m_freeCnt = 977
At this point, I need only update a row like so and I get a split: 3 rows to one page, 4 to the other:
UPDATE PageSplit
SET c2 = REPLICATE('b' , 2000)
WHERE c1 = 1 ;
GO
So, my question is this: when does the update happen: before or after the page split? I assume that it occurs after the split.
I have attached the output of SQL Profiler and DBCC IND. Just a side note, the updated row remained on the original page.


I applied SQL Kiwi's advice. See the results here:
