M.A*_*Ali 10 sql-server sql-server-2008-r2 files
我在网上搜索过,但没有找到我要找的东西。
问题/查询据我所知,SQL Server 中的数据库应该有一个 .mdf 文件,可能还有一些 .ndf 文件和一个 .log 文件。
我见过许多带有一个 mdf 和多个 ndf 文件的数据库。但是最近我在服务器上遇到了一些数据库,其中每个数据库都有多个 mdf 文件。
我备份了一些数据库,将它们移动到另一台服务器,并将主文件恢复为 .mdf,所有其他文件显然都恢复为 .ndf,除了它恢复为 .log 的日志文件。
现在我的问题是:
它是 SQL Server 2008 R2 64bit Enterprise Edition
任何正确方向的建议或指针都非常感谢。谢谢你。
Sha*_*nky 14
但是最近我在服务器上遇到了一些数据库,其中每个数据库都有多个 mdf 文件。
那是因为不正确的命名约定。微软说每个数据库都有一个主数据文件,但这并不意味着它只能有一个“mdf数据文件”,数据库可以有多个带.mdf扩展名的数据文件,但只有一个是主数据文件。最好mdf为主数据文件和ndf次要数据文件提供扩展名以进行适当的划分,但这不是硬性规定,您也可以为主数据文件提供 .abc 扩展名,这样您所看到的都是正常的。事实上,您可以提供任何您喜欢的扩展名。
为数据库设置多个 .mdf 文件有什么智慧吗?
如果你的意思是:
为数据库设置多个主文件有什么智慧吗?
答案是否定的,一个数据库只能有一个主数据文件。
但如果你的意思是:
为数据库设置多个数据文件(.mdf、.ndf 或不同名称)是否有任何智慧?
这取决于,您可以也不能拥有多个数据文件的优势。如果它们分布在不同的物理驱动器上(我说的是主轴),您会看到写入密集型应用程序的一些优势。如果它们都在相同的逻辑分区上,则不会有任何优势,因为它们底层将使用公共资源。使用文件和文件组可以提高数据库性能,因为它允许跨多个磁盘、多个磁盘控制器或 RAID(独立磁盘冗余阵列)系统创建数据库。例如,如果您的计算机有四个磁盘,您可以创建一个由三个数据文件和一个日志文件组成的数据库,每个磁盘上有一个文件。在访问数据时,四个读写头可以同时并行访问数据。
文件组对每个文件组内的所有文件使用比例填充策略。当数据写入文件组时,SQL Server 数据库引擎将与文件中的可用空间成比例的量写入文件组中的每个文件,而不是将所有数据写入第一个文件直到写满。然后写入下一个文件。例如,如果文件 f1 有 100 MB 可用空间,文件 f2 有 200 MB 可用空间,则从文件 f1 分配一个区,从文件 f2 分配两个区,依此类推。这样,两个文件几乎同时变满,实现了简单的条带化。
我知道的其他优势是考虑使用 1 TB 的数据库,如果您有单个数据文件,并且您想在其他服务器上恢复该数据库,那么您极不可能拥有 1 TB 的可用空间。现在,如果相同的数据库分布在不同的文件上,每个文件的大小为 250 G,则恢复变得更容易。这实际上可能不是您的情况,但它确实有很大帮助,但找到具有四个 250 G 驱动器而不是一个 1 TB 驱动器的服务器并不容易
我会说有不同的文件组而不是许多数据文件更好,但同样没有很多环境。由多个文件组组成的数据库可以通过称为零碎恢复的过程分阶段恢复。零碎还原适用于所有恢复模型,但对于完整和大容量日志模型比简单模式更灵活。数据库中的文件或文件组可以单独备份和恢复。这使您可以仅恢复损坏的文件,而不必恢复数据库的其余部分。文件组备份中的文件可以单独还原或作为一个组还原
| 归档时间: |
|
| 查看次数: |
19388 次 |
| 最近记录: |