我们有一个两节点的 SQL Server 2017 AG。有一项工作会查看我们数据库的自动增长设置,并确保它们未设置为使用百分比。在过去的一天里,它一直在说它正在更新特定数据库的设置。这以前没有发生过。经过调查,我发现节点 01 上的 sys.master_files 表示数据库的事务日志文件将以 512MB 的增量增长,但节点 02 的 sys.master_files 表示它将以 10% 的增量增长 服务器 02 是主要的。在这两个副本上,此数据库的 sys.database_files 中的 is_percent_growth 都被清除。查看 SSMS 中的文件属性,两个副本都显示 512MB 自动增长,这很可能是因为 SSMS 在 sys.database_files 中查找(我的猜测)。
此 AG 上没有任何故障转移。
问题
- 节点 02 上的 sys.master_files 和 sys.database_files 之间怎么会有意见分歧?
- 数据库的自动增长设置是如何在两个副本之间不同步的?
- 如何清除节点 02 上的 is_percent_growth 标志,以便不再有误报?理想情况下,我希望在不使 AG 脱机的情况下执行此操作。
我已阅读https://stackoverflow.com/questions/4174520/sql-server-sys-master-files-vs-sys-database-files解释了 sys.master_files 和 sys.database_files 之间的区别,但它没有t 解释这里的情况。
这是一个猜测:
当您播种(自动或通过备份)数据库时,来自 sys.database_files 的信息被复制到另一端的 sys.master_files 中(位于主数据库的表中)。
我的猜测是,文件属性的稍后更改(存储在(您所看到的)sys.database_files 中)不会反映在 sys.master_files 中。也许某些更改会触发将状态复制到 sys.master_files 而某些更改不会?也许这在以后的版本中得到了改进?
抱歉说得含糊不清,我这里没有环境来测试这个。我会对 ldf 文件进行一些更改,看看是否有任何更改导致另一端的 sys.master_files 被更新。
增加文件大小。缩小它(仅 1 MB)。更改最大尺寸。等等。当然,一次一个。