文件和文件组概述

通过定义和使用其他文件组,可以改进数据库性能并就如何备份和还原数据库对象进行更好的管理。 例如,可以针对不同的物理磁盘定义文件组以缩短访问时间。 如果您将某个架构中的所有数据库对象都与特定的文件组相关联,则可以一起备份和还原这些对象。 有关文件组的更多信息,请参见 Microsoft 网站上的 Physical Database Files and Filegroups(物理数据库文件和文件组)主题。

提示

如果处理的是数据层应用程序 (DAC) 项目,则无法定义文件或文件组。 如果要控制数据库中的文件和文件组,必须使用 .dbschema 数据库项目。

行为

在数据库项目中定义文件和文件组之前,应当考虑下列类型的行为,以便可以区分预期行为与意外问题。

导入架构

在从现有数据库导入架构时,还可以导入该数据库的文件和文件组定义。

比较架构

通过比较架构,可以确定是否在具有不同名称的文件组中创建了同名对象, 还可以确定是否在源(而不是目标)中添加或移除了文件组。 有关如何比较架构的更多信息,请参见如何:比较数据库架构

生成和部署数据库项目

您不能使文件和文件组本身特定于某个生成配置。 但是,您可以使用特定于某个配置的 MSBuild 变量来定义文件。 例如,使用此方法,可以在独立开发环境中使用与临时服务器上不同的路径和文件名。

删除文件组、文件和日志文件

如果您从数据库项目中删除某个文件组,则可以将所做的更改部署到新数据库中,但是,如果要部署到现有的数据库中,则所做的更改将被忽略。 当您从数据库项目中删除某个文件组时,与该文件组相关联的所有文件也将被删除。 数据库项目中位于已删除文件组中的任何对象将以错误状态显示。 若要解决这些错误,必须重新创建该文件组或者修改这些对象定义,才能将这些定义与另一个文件组相关联。 在这些情况下,只有在错误得以解决之后才能部署数据库项目。

您不能删除主文件组, 而必须始终指定一个默认文件组。 如果您移除了某个文件组中的唯一一个文件,则会在**“错误列表”**窗口中看到一个警告,此警告指示该文件组的定义不完整。 另外,您不能移除数据库项目中的唯一一个日志文件。 在每个数据库项目中,必须始终至少定义一个日志文件。

限制

在部署文件组更改、重命名文件组或在只读文件组中定义数据库对象时,可能会遇到下列限制。

部署所做的更改

如果您在数据库项目中添加一个文件组,则可以将所做的更改部署到新的或现有的数据库。 如果您删除某个文件组或者修改它的文件或属性,则可以将所做的更改部署到新数据库。 但是,如果您将该项目部署到现有数据库,则对文件组进行的删除和修改将被忽略。 如果数据库项目中某个文件组的名称与目标上某个文件组的名称相匹配,则会假设这两个文件组相同。

如果您重命名某个文件组,然后将其部署到现有数据库,则将创建一个具有新名称的文件组,现有的文件组不会发生变化。

重命名对象定义中的文件组

可以使用数据库重构功能来更新数据库对象定义中的文件组名称。 有关更多信息,请参见重命名对数据库对象的所有引用

在只读文件组中定义对象

即使您针对某个文件组选中了**“只读”复选框,仍可以在数据库项目的该文件组中定义对象。 不过,如果您尝试将这些更改部署到现有数据库,则部署操作将失败,并出现一个错误。 如果将这些更改部署到新数据库,则将创建这些对象,就如同未选中“只读”**复选框一样。 在创建这些对象之后,该文件组将在数据库中设置为只读。

处理数据层应用程序

如果创建数据层应用程序项目,则无法定义该项目的文件或文件组。 另外,如果将数据库项目转换为 DAC 项目,则该数据库项目中定义的任何文件和文件组都将导致出现错误。 有关更多信息,请参见在数据层应用程序项目和数据库项目之间转换

请参见

任务

如何:指定预先部署或后期部署脚本

如何:添加文件和文件组

概念

数据库项目设置概述