在 Visual Studio 中进行架构比较时,有没有办法忽略“STATISTICS_NORECOMPUTE”子句?

问题描述 投票:0回答:1

我的 Visual Studio (2022) 解决方案中有一个数据库项目,我刚刚将其同步到 SQL Azure 中的实时数据库。我的开发数据库位于本地 SQL Server 实例中(我认为是 2019 年)。当我在 Visual Studio 中以项目作为源、本地数据库作为目标运行架构比较时,它显示大量表不同步,但它们唯一不同的是因为 Azure 数据库具有“WITH (STATISTICS_NORECOMPUTE = ON)" CONSTRAINT 行上的子句。例如:

enter image description here

我的问题是:

  1. 有什么办法可以防止“模式比较”添加这个吗?关闭“统计”选项没有任何作用。

  2. 如果我只使用 Azure 版本的表定义更新 SQL Server 2019 实例,会有什么影响吗?我不是 dba,因此 STATISTICS_NORECOMPUTE 对我来说没有任何意义。

database azure-sql-database visual-studio-2022 sql-server-2019 schema-compare
1个回答
0
投票

有什么办法可以防止“模式比较”添加这个吗?关闭“统计”选项没有任何作用。

AFAIK 不幸的是,在 Visual Studio 的架构比较工具中,没有内置方法可以忽略特定差异,例如

WITH (STATISTICS_NORECOMPUTE = ON)
子句。您所指的
Statistics
选项仅影响实际统计对象,而不影响表约束或索引选项,例如
STATISTICS_NORECOMPUTE

为了避免架构比较中的这些差异,您可以选择在应用架构更新时不应用这些特定更改,方法是 手动检查生成的 SQL 并排除与

STATISTICS_NORECOMPUTE
相关的更改。

  1. 如果我只使用 Azure 版本的表定义更新 SQL Server 2019 实例,会有什么影响吗?我不是 dba,因此 STATISTICS_NORECOMPUTE 对我来说没有任何意义。

STATISTICS_NORECOMPUTE
是一个索引选项,可防止 SQL Server 自动更新表或索引的统计信息。统计信息帮助 SQL Server 查询优化器确定执行查询的最有效方法。

  • 如果统计数据随着时间的推移变得陈旧,关闭自动更新 (
    STATISTICS_NORECOMPUTE = ON
    ) 可能会导致性能下降。

如果您将

WITH (STATISTICS_NORECOMPUTE = ON)
应用于本地 SQL Server 2019 实例,它不会立即造成任何损害,但如果表的数据频繁更改,您应该注意潜在的性能问题 数据经常变化。

© www.soinside.com 2019 - 2024. All rights reserved.