Stretch database – Modifying the filter function

-> Please refer “https://jbswiki.com/2017/06/15/stretch-database-in-sql-server-2016/” if you want to setup Stretch database from scratch. If you refer the article I would have named the function “StretchByYear” in the wizard page “Select rowst  stretch”.

-> I will open the function StretchByYear to check what it contains,

Blog6_1.PNG

-> The modify script for the function is as below,

USE [JB_StretchDB]
GO
/****** Object: UserDefinedFunction [dbo].[StretchByYear] Script Date: 17/06/2017 7:59:56 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [dbo].[StretchByYear] (@Year Int)
RETURNS TABLE
WITH SCHEMABINDING
AS RETURN SELECT 1 AS is_eligible
WHERE @Year <= CONVERT(Int, N’1982′)

-> The modify function updates us that all rows less than or equal to 1982 will be moved to the cloud.

-> Checking the stretch monitor, We see 20000 rows on On-Premise and 30000 rows on cloud.

Blog6_2.PNG

-> The current filter function moves all data less than equal to 1982 to the cloud. Now lets consider that the  requirement changes to move all data less than equal to 1983 should be moved to cloud. In order to achieve this, I will create a new function as below,

USE [JB_StretchDB]
GO
CREATE FUNCTION [dbo].[StretchByYear_1983] (@Year Int)
RETURNS TABLE
WITH SCHEMABINDING
AS RETURN SELECT 1 AS is_eligible
WHERE @Year <= CONVERT(Int, N’1983′)
GO

-> One thing to remember is, the new filter function has to be less restrictive than the previous function.

-> Enabling the filter function for table Table1,

ALTER TABLE Table1 SET ( REMOTE_DATA_ARCHIVE = ON (
FILTER_PREDICATE = dbo.StretchByYear_1983(Year),
MIGRATION_STATE = OUTBOUND
) )

-> Executed below coommand to insert an row,

insert into Table1 values(replicate(‘A’,25),1980)

-> Now checking the Stretch monitor,

Blog6_3.PNG

-> It is clear from the screenshot above that the new filter function has taken effect.

Thank You,
Vivek Janakiraman

Disclaimer:
The views expressed on this blog are mine alone and do not reflect the views of my company or anyone else. All postings on this blog are provided “AS IS” with no warranties, and confers no rights.

Advertisements