我有一个 SQL 2016 Ent。具有 3 个节点的 AG 版。我们在 AG 中有一个包含 5 个文件流表的数据库。每个表都在它自己的文件流数据文件中。今天我修复了一个错误,即通过重建索引将所有文件保存到一个文件流数据文件中。
在 dev 中,我们没有 AG,数据库处于简单恢复中。空间被收回了。之前和之后看起来像这样:
文件已移至正确的文件流数据文件,但未从原始数据文件中恢复空间。
一开始我还以为是车库收藏,看了Paul Randal的博文。我缩小了日志文件,然后创建了一个垃圾表,通过显式转换添加了大量行,运行了日志备份和检查点,所有这些都在主节点上。日志文件确实增长了,之前活动的 VLF 被标记为不活动。
更复杂的是,备份是辅助节点上的完全复制\日志备份。
在这种情况下回收空间的正确方法是什么?
编辑:按照安迪在他博客中的步骤后,空间被收回。每个 AG 节点看起来像:
我有一个从显示不同数据的表中选择数据的视图。
表是dbo.user
,视图是dbo.users
(不要判断,我继承了这个系统)。观点很简单select * from table
。
如果我运行以下语句:
SELECT Field1, Field2 FROM dbo.[User] WITH (NOLOCK) ORDER BY Field1;
SELECT Field1, Field2 FROM dbo.Users WITH (NOLOCK) ORDER BY Field1;
Run Code Online (Sandbox Code Playgroud)
我为其中一个字段获得了不同的值。见附图:
任何想法这是如何发生的?该表是聚集的,具有 pk 和唯一索引。