我们使用 SSDT 来部署我们的数据库更改。我们有一个每周重新创建索引的脚本。我们的脚本如下所示:
declare @cmd varchar(max)
set @cmd = '
CREATE NONCLUSTERED INDEX [iAudit-ModifiedDateTime] ON [dbo].[Audit]
(
[ModifiedDateTime] ASC
)
WHERE ModifiedDateTime > ''###''
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = ON, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, FILLFACTOR = 75) ON [PRIMARY]
'
set @cmd = replace(@cmd, '###', convert(varchar(8), dateadd(day, -3, getdate()), 112))
exec (@cmd)
不幸的是,当我们运行 SSDT 来更新数据库时,它会将索引更改为项目中的定义,或者在不包含时将其删除。有什么办法可以解决这个问题吗?我们需要过滤索引的原因是要将具有数百万行的审计表中的最新记录添加到数据仓库中。