ฉันสร้างตารางที่มี 650 คอลัมน์ (19,4) คอลัมน์ เมื่อฉันเปิดการบีบอัดหน้าโดยเรียกใช้
ALTER TABLE fct.MyTable REBUILD WITH (DATA_COMPRESSION = PAGE);
ฉันเข้าใจ
ข่าวสารเกี่ยวกับ 1975, ระดับ 16, สถานะ 1
ดัชนี 'PK_Mytable' ความยาวแถวเกินความยาวสูงสุดที่อนุญาตได้ของ '8060' ไบต์
แต่ 650 ครั้ง 9 ไบต์มีเพียง 5850 ไบต์ซึ่งค่อนข้างไกลจากขีด จำกัด ที่ระบุไว้ที่ 8060 ไบต์
เซิร์ฟเวอร์กำลังเรียกใช้ Windows 2012 r2 ด้วย SQL Server 2016 SP1 CU2
ค่าใช้จ่ายของแถวเมื่อใช้การบีบอัดหน้า?
นี่คือรหัสเพื่อแสดงสิ่งที่ฉันหมายถึง:
/* test script to demo MSG 1975 */
DECLARE @sql NVARCHAR(max)='', @i INT =0
drop table if exists dbo.mytable;
SET @sql = 'Create table dbo.Mytable (MyTableID bigint not null
identity(1,1) primary key clustered, '
WHILE @i < 593 BEGIN
SET @sql += ' Column' + LTRIM(@i) + ' numeric(19,4) null, '
SET @i +=1
END
SET @sql += ' LastColumn int) '
--SET @sql += ' with (DATA_COMPRESSION = ROW) '
SET @sql += ' with (DATA_COMPRESSION = PAGE) '
SELECT @sql
EXEC sys.sp_executesql @sql
SELECT top 10000 * FROM dbo.MyTable MT
การบีบอัดแถวก็ล้มเหลวเช่นกัน แต่ในจำนวนแถวที่แตกต่างกัน