Questions tagged «filegroups»

2
只读文件组中的列存储索引可防止CheckDB
如果文件组包含列存储索引,则似乎设置了文件组以read_only防止dbcc checkdb整个数据库使用。尝试运行checkdb或checkfilegroup(对于数据库中的任何文件组,包括读写辅助文件和[PRIMARY])时,返回以下错误... Msg 8921, Level 16, State 1, Line 24 Check terminated. A failure was detected while collecting facts. Possibly tempdb out of space or a system table is inconsistent. Check previous errors. 是否存在将列存储数据存储在只读文件组中的受支持方法?还是在这种情况下无法进行完整性检查? 复制 create database check_fg_ro go use check_fg_ro go exec sp_changedbowner 'sa'; go alter database check_fg_ro add …

1
将主键移到文件组(SQL Server 2012)
如何将群集的主键移动到新文件组?我已经找到了可能的“算法”,但是效率很低: 删除非集群索引(要求对它们进行重新排序和重建) 删除聚簇索引(要求使用整个表) 创建新的主键约束(巨大的排序操作) 创建所有非聚集索引(需要排序和写入) 有没有更有效的方法?这是非常低效的,并且由于弱服务器上的表大小为50GB,将花费很长时间。 是否没有办法跳过所有这些,只对新文件组进行重建?那将不需要任何数据排序。

2
是否存在确定多个文件文件组中包含分配单元的确切文件的方法?
我希望能够详细了解哪些数据库文件包含用于数据库中各种HoBT(对齐和不对齐)的分配单元。 在我们开始为每个文件组创建多个数据文件之前,我一直使用的查询(请参见下文)对我很有帮助,而我只能弄清楚如何获得与文件组级别一样的粒度。 select SchemaName = sh.name, TableName = t.name, IndexName = i.name, PartitionNumber = p.partition_number, IndexID = i.index_id, IndexDataspaceID = i.data_space_id, AllocUnitDataspaceID = au.data_space_id, PartitionRows = p.rows from sys.allocation_units au join sys.partitions p on au.container_id = p.partition_id join sys.indexes i on i.object_id = p.object_id and i.index_id = p.index_id join sys.tables …

1
文件组的好处以及将文件组设置为只读
在将多个文件组更改为只读是一个不错的选择以及何时使用它们的情况下,有人可以引用我的真实场景吗?如果将其设置为只读,会有什么好处? 在具有多个文件组的数据库上,您是否需要对整个数据库进行备份,还必须备份该文件组中的每个文件?您还能给我一个何时使用文件组备份的示例吗?我不明白为什么只备份整个数据库对备份文件组会有好处。希望我能获得现实的经验,此文件组备份将是理想的选择

3
SQL Server:仅用于系统表的文件组?
我们的公司标准之一是为用户表/索引提供单独的文件组/文件。这被设置为默认值,因此不需要限定CREATE TABLE语句。 所以看起来像这样 fileid 1 =系统表,MDF fileid 2 = t-log = LDF fileid 3 =用户资料= NDF 在座的任何人都可以帮助我理解为什么要这样做的原始理由吗? 我会干净的说我是伏都教徒。上午我错了......? 编辑:我知道如何使用文件组来分离索引/分区/档案,以及如何恢复零碎的文件。这个问题是关于在同一卷上仅对系统表使用单独的文件组。

2
在单个文件组上分区
我的数据库中有一些非常大的表,但是这些数据的很大一部分是“旧的”。 由于无法控制的情况,我不允许删除此“旧”数据。另一个限制是我无法修改数据库,这意味着要向其中添加文件组。按照目前的状态,所有内容都驻留在PRIMARY文件组中。 我正在考虑将这些表划分为几个分区,例如“新”,“旧”,“已归档”等。为此,我确实有一个“状态”列。 考虑到上述情况和限制,我想知道分区在这里是否有意义。换句话说,如果以这种方式对我的表进行分区,但是所有分区都位于同一文件组上,SQL Server将足够聪明地在我的“新”数据所驻留的基础文件中找到该特殊区域,并且不会碰到具有“旧”数据的区域? 换句话说,如果我的数据中有80%是“旧的”。SQL Server是否具有避免访问100%的基础文件并仅访问20%的包含“新”数据的机制(假设,当然,我WHERE在查询的子句中指定了分区列)。 我想回答这个问题,就需要了解如何在内部实现分区。我感谢任何指示。


2
无法删除没有相关文件的文件组
我在SQL Server 2017 CU3上遇到一些奇怪的错误消息。我正在迁移数据库并重组文件组。“重新组织”是指我使用存储过程,该过程在对象的新文件组上创建分区函数和分区方案,在分区时重建索引,然后删除分区。 最后,我有一些空文件组。他们的文件被删除。文件组本身也将被删除。在大多数情况下,此方法效果很好。但是对于两个数据库,我删除了文件... 剩下一个文件组,但没有文件关联,但是 ALTER DATABASE REMOVE FILEGROUP 引发错误5042: 无法删除文件组“ xyz”,因为它不为空。 题 我如何摆脱那个空文件组...可能是什么问题? 我已经阅读了一些常见问题,但是它们在我的系统中不存在: 已检查: SELECT * FROM sys.partition_schemes; SELECT * FROM sys.partition_functions; 0行...数据库中没有分区对象 UPDATE STATISTICS 对于数据库中的所有对象 没有效果 检查文件组上的索引: SELECT * FROM sys.data_spaces ds INNER JOIN sys.indexes i ON ds.data_space_id = i.data_space_id WHERE ds.name = 'xyz' 0行 检查文件组中的对象: …

1
SQL Server更新了只读文件组上的记录?
我的数据仓库中有一个非常大的数据库,我们在其中实施了分区以管理维护和备份。一定期限的记录最终每月一次迁移到一个只读文件组。 有时,我们的ETL流程会尝试更新已迁移到存档的较旧记录,我们希望这些记录会失败。但是,我至少有两个最近的示例,其中即使测试记录似乎位于测试环境中的只读文件组的分区中(查询sys.partition_functions和sys.partition_range_values),该记录也会被更新。 当尝试更新记录时,生产中的相同记录会导致预期的失败。到目前为止,我们已经两次捕获到该更新,但在生产中失败了,但是在测试中成功了(反之亦然)。 相关环境事实: SQL Server 2012 SP3 CU3(内部版本11.0.6537.0) 测试是开发人员版,生产是企业 可以根据要求提供其他人:现在已严重困扰... 更新2016-08-19 新记录在一夜之间以某种方式更新了。确认它在只读文件组中。发现我可以更新同时插入的记录(即也位于只读文件组的同一分区上)。我在同一分区上确定了一条记录,并且能够多次更新该记录。尝试更新过夜更新的记录会导致预期的失败。 更新2016-08-11 在每晚的测试过程中,只读分区上的更新继续发生。尝试从该过程中更新相同的记录失败。尝试以以前更新记录的用户身份登录时更新相同的记录失败。我也无法通过更新夜间程序尚未触及的类似记录来重复该问题。 更新2016-08-04 今天发现它不限于该单个表,因为我发现了使用相同分区方案在不同表上再次出现相同行为的情况。 更新2016-08-03 运行该脚本这个MSDN脚本证实了我使用肯德拉小的分区助手的意见时得到ph.FilegroupDetail和ph.ObjectDetail从该演示。有问题的记录位于分区2中(有问题的记录的分区列值为2015年3月18日) Filegroup Low Boundary UpperBoundary Archive (RO) NULL 1900-01-01 Archive (RO) 1900-01-01 2015-04-01 ActiveFG (RW) 2015-04-01 2015-07-01 ActiveFG (RW) 2015-07-01 2015-10-01 ActiveFG (RW) 2015-10-01 2015-01-01 ActiveFG (RW) 2016-01-01 2016-04-01 ActiveFG (RW) 2016-04-01 …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.