如何向现有数据库添加额外的硬盘驱动器

Dea*_*gor 6 sql-server sql-server-2008-r2

我有一个接近填满它所在硬盘的数据库。我想将数据库扩展到另一个硬盘来处理这个问题。

我看到 SSMS 下的数据库属性中有一个文件选项,我可以添加它,但我真的不想在不知道接下来会发生什么的情况下添加文件。我是否需要在文件组中添加一个新条目,然后再添加到文件中?PRIMARY 类型是否只应该用于第一个文件?如果不是,那么制作一个小学和另一个中学有什么区别?添加文件后,数据库引擎是自动决定将数据放在哪里还是我必须进入我的表并以某种方式指定它?

对不起,如果这是重复的。如果不是,我会感到惊讶,但我找不到其他有这些答案的问题。

Tho*_*ger 7

我是否需要在文件组中添加一个新条目,然后再添加到文件中?

您可以在此处执行以下两项操作之一:

  1. 添加一个新的文件组和至少一个新的数据文件
  2. 将新数据文件添加到现有文件组(在本例中为 PRIMARY)

PRIMARY 类型是否只应该用于第一个文件?

不可以,PRIMARY 文件组可以包含多个数据文件。

添加文件后,数据库引擎是自动决定将数据放在哪里还是我必须进入我的表并以某种方式指定它?

在文件组内,SQL Server 将通过比例填充算法管理跨数据文件的数据分散。因此,您无需手动管理数据在文件组中的位置。但是,如果您创建一个包含一个或多个数据文件的附加文件组,并且您希望数据存在于该文件组中,那么您将需要明确说明这一点(除非您将新文件组设置为默认文件组)。

例如:

create table dbo.YourNewTable
(
    col1 int not null,
    col2 int not null
    -- so on and so forth
) on YourNewFilegroup;
go
Run Code Online (Sandbox Code Playgroud)

要了解您当前的默认文件组是什么:

select
    name as default_filegroup_name
from sys.filegroups
where is_default = 1;
Run Code Online (Sandbox Code Playgroud)

要更改默认文件组:

alter database YourDatabase
modify filegroup YourNewFilegroup
default;
go
Run Code Online (Sandbox Code Playgroud)