在 SQL Server 2008 中是否有可能在一个文件中具有结构而在另一个文件中具有行数据?

Ach*_*les 3 sql-server-2008 partitioning

我知道这听起来可能很荒谬,但是:
是否可以在 SQL Server 中的文件级别上分离数据定义(即我的表、视图和其他事物的结构)和行数据。
我认为在 2 个或更多物理分离的驱动器上拥有两个或更多文件组并在其中包含文件以单独存储定义或行数据会很有用;所以如果你的行数据硬盘崩溃,你不会丢失数据结构......
这可以通过分区来完成吗?

Mar*_*ith 5

正如@Denny 指出的那样,架构始终位于 PRIMARY 文件组中。如果您可以使用Partial Availability & Piecemeal Restore,那么在 PRIMARY 中只使用 schema 并在其他地方使用数据有潜在的可用性优势。

这是否有用取决于数据的性质以及是否有适合分区的表。例如,如果您最大的表包含按 OrderDate 跨季度文件组分区的 Orders 和 OrderLines,而您的其余表相比之下相对较小,则在发生故障时,您将

  1. 恢复 PRIMARY 文件组(立即,因为它很小)。
  2. 恢复包含较小支持表的文件组。
  3. 恢复分配给当前季度订单数据的文件组(与恢复所有历史记录相比再次相对较快)。
  4. 将其余分区设置为离线。
  5. 使数据库联机。您现在可以接受新订单并处理现有订单。
  6. 逐步恢复剩余分区并依次上线。

同样徒劳地,如果您要遭受数据库元数据损坏(与数据结构损坏相比,这种情况很少发生,但并非不可能),您只需要恢复非常小的主文件组即可启动和运行。

这可以为大型数据库带来的可用性优势非常显着,我从一开始就尝试在新项目中设计部分可用性。以 50MB/s 的速度恢复 500GB 的数据库至少需要 3 小时才能解释为什么非技术人员需要这么长时间。通过深谋远虑和规划,让业务重新启动和运行可能只是其中的一小部分。