我的 Visual Studio (2022) 解决方案中有一个数据库项目,我刚刚将其同步到 SQL Azure 中的实时数据库。我的开发数据库位于本地 SQL Server 实例中(我认为是 2019 年)。当我在 Visual Studio 中以项目作为源、本地数据库作为目标运行架构比较时,它显示大量表不同步,但它们唯一不同的是因为 Azure 数据库具有“WITH (STATISTICS_NORECOMPUTE = ON)" CONSTRAINT 行上的子句。例如:
我的问题是:
有什么办法可以防止“模式比较”添加这个吗?关闭“统计”选项没有任何作用。
如果我只使用 Azure 版本的表定义更新 SQL Server 2019 实例,会有什么影响吗?我不是 dba,因此 STATISTICS_NORECOMPUTE 对我来说没有任何意义。
有什么办法可以防止“模式比较”添加这个吗?关闭“统计”选项没有任何作用。
AFAIK 不幸的是,在 Visual Studio 的架构比较工具中,没有内置方法可以忽略特定差异,例如
WITH (STATISTICS_NORECOMPUTE = ON)
子句。您所指的 Statistics
选项仅影响实际统计对象,而不影响表约束或索引选项,例如 STATISTICS_NORECOMPUTE
。
为了避免架构比较中的这些差异,您可以选择在应用架构更新时不应用这些特定更改,方法是 手动检查生成的 SQL 并排除与
STATISTICS_NORECOMPUTE
相关的更改。
- 如果我只使用 Azure 版本的表定义更新 SQL Server 2019 实例,会有什么影响吗?我不是 dba,因此 STATISTICS_NORECOMPUTE 对我来说没有任何意义。
STATISTICS_NORECOMPUTE
是一个索引选项,可防止 SQL Server 自动更新表或索引的统计信息。统计信息帮助 SQL Server 查询优化器确定执行查询的最有效方法。
STATISTICS_NORECOMPUTE = ON
) 可能会导致性能下降。如果您将
WITH (STATISTICS_NORECOMPUTE = ON)
应用于本地 SQL Server 2019 实例,它不会立即造成任何损害,但如果表的数据频繁更改,您应该注意潜在的性能问题
数据经常变化。