SQL Server Stretch Database与Temporal Tables全解析
1. Stretch Database的滑动窗口过滤谓词
在过滤谓词中,不能调用非确定性函数。例如,若要迁移所有日期列值早于1个月的数据,不能直接在过滤函数中使用 DATEADD 函数,因为它是非确定性的。
假设之前创建了一个过滤函数,用于迁移2016年6月1日之前的所有行。现在要将所有早于1个月的数据迁移到云端,由于函数必须是确定性的,且不能修改已定义了 SCHEMABINDING 属性的现有函数,所以需要重新创建一个带有文字日期的新函数。比如在8月1日,需要一个函数来指示系统迁移早于7月1日的行:
CREATE FUNCTION dbo.StretchFilter20180301(@col DATETIME)
RETURNS TABLE
WITH SCHEMABINDING
AS
RETURN SELECT 1 AS is_eligible
WHERE @col < CONVERT(DATETIME, '01.03.2018', 104);
然后将新创建的函数分配给 T1 表:
ALTER TABLE dbo.T1
SET (REMOTE_DATA_ARCHIVE = ON
(FILTER_PREDICATE = dbo.StretchFilter20180301(c2), MIGRATION_STA
超级会员免费看
订阅专栏 解锁全文
943

被折叠的 条评论
为什么被折叠?



