Sql — Server 2012 Enterprise !new!

EXEC dbo.sp_add_schedule @schedule_name = N'Weekly_Sunday_2AM', @freq_type = 8, @freq_interval = 1, @active_start_time = 20000;

-- Create large fact table with partitioning CREATE TABLE dbo.SalesFact ( SaleID INT IDENTITY(1,1), SaleDate DATETIME, ProductID INT, CustomerID INT, Amount DECIMAL(18,2), Quantity INT, CONSTRAINT PK_SalesFact PRIMARY KEY (SaleID, SaleDate) ) ON ps_DateRange(SaleDate);

IF @ObjectID IS NULL BEGIN RAISERROR('Table not found', 16, 1); RETURN; END; sql server 2012 enterprise

SET @ObjectID = OBJECT_ID(@SchemaName + '.' + @TableName);

-- Get max partition number SELECT @MaxPartition = MAX(partition_number) FROM sys.partitions WHERE object_id = @ObjectID; EXEC dbo

-- Verify Enterprise Edition (required for compression + online + partitioning) IF CAST(SERVERPROPERTY('Edition') AS NVARCHAR(128)) NOT LIKE '%Enterprise%' AND CAST(SERVERPROPERTY('Edition') AS NVARCHAR(128)) NOT LIKE '%Developer%' BEGIN RAISERROR('This feature requires SQL Server Enterprise or Developer Edition', 16, 1); RETURN; END;

-- Update final status UPDATE dbo.IndexMaintenanceLog SET EndTime = GETDATE(), Status = 'Completed', CompressionUsed = @CompressionType WHERE TableName = @SchemaName + '.' + @TableName AND Status = 'Running'; END; GO -- Maintenance log table CREATE TABLE dbo.IndexMaintenanceLog ( LogID INT IDENTITY(1,1) PRIMARY KEY, TableName NVARCHAR(256), Action NVARCHAR(100), StartTime DATETIME, EndTime DATETIME, PartitionsProcessed INT DEFAULT 0, LastProcessedTime DATETIME, Status NVARCHAR(50), CompressionUsed NVARCHAR(10), CONSTRAINT CHK_Compression CHECK (CompressionUsed IN ('PAGE', 'ROW', 'NONE')) ); -- Error logging (Enterprise: uses compression) CREATE TABLE dbo.ErrorLog ( ErrorID INT IDENTITY(1,1) PRIMARY KEY, ProcedureName NVARCHAR(256), ErrorMessage NVARCHAR(MAX), ErrorDate DATETIME DEFAULT GETDATE() ); @freq_type = 8

-- Insert sample data INSERT INTO dbo.SalesFact (SaleDate, ProductID, CustomerID, Amount, Quantity) SELECT DATEADD(day, number, '2023-12-31'), (number % 100) + 1, (number % 50) + 1, RAND(CHECKSUM(NEWID())) * 1000, (number % 10) + 1 FROM master..spt_values WHERE type = 'P' AND number < 50000;