我知道这听起来可能很荒谬,但是:
是否可以在 SQL Server 中的文件级分离数据定义(即我的表、视图和其他东西的结构)和行数据。
我认为在 2 个或多个物理上分开的驱动器上有两个或多个文件组并在其中包含文件以单独存储定义或行数据会很有用;所以如果你的行数据硬盘崩溃,你不会丢失数据结构......
这可以通过分区来完成吗?
我知道这听起来可能很荒谬,但是:
是否可以在 SQL Server 中的文件级分离数据定义(即我的表、视图和其他东西的结构)和行数据。
我认为在 2 个或多个物理上分开的驱动器上有两个或多个文件组并在其中包含文件以单独存储定义或行数据会很有用;所以如果你的行数据硬盘崩溃,你不会丢失数据结构......
这可以通过分区来完成吗?
正如@Denny 指出的那样,模式始终位于 PRIMARY 文件组中。如果您可以使用Partial Availability & Piecemeal Restore ,那么在 PRIMARY 中只使用模式而在其他地方使用数据可能会带来可用性方面的好处。
这是否有用取决于数据的性质以及您是否有适合分区的表。例如,如果您最大的表包含 Orders 和 OrderLines,它们按季度文件组按 OrderDate 分区,而您的其余表相比之下相对较小,如果发生故障,您会
类似地,如果您要遭受数据库元数据损坏(与数据结构损坏相比,这种情况很少见,但并非不可能),您只需要恢复非常小的主文件组即可启动并运行。
这可以为大型数据库带来的可用性优势非常重要,我尝试从一开始就在新项目中设计部分可用性。以 50MB/s 的速度恢复 500GB 的数据库将导致至少 3 个小时向非技术人员解释为什么需要这么长时间。有了深思熟虑和计划,让业务重新启动和运行可能只是其中的一小部分。
表模式将始终保存在 PRIMARY 文件组中。您可以将这些表放入另一个文件组中,但是如果您丢失了任何一组磁盘,数据库就会受到怀疑并且您必须进入紧急模式并进行恢复。分配为属于该表的页面将消失,因此将无法读取该表。您可以阅读存储架构的页面,但仅此而已。
无论您需要恢复什么,都可以使数据库再次进入可用状态。