如何确定用于存储表数据的文件或文件组?

时间:2012-04-12 16:19:55

标签: sql-server

我想指定一个特定的文件或文件组,用于在数据库中保存特定的表。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

你需要更加具体。您可以通过以下方式确定数据库中可用的数据文件:

SELECT name, physical_name, state_desc, size, max_size, is_read_only
  FROM databasename.sys.database_files  
  WHERE type_desc = 'ROWS';

你可以在这里看到文件组:

SELECT name, type_desc, is_read_only 
  FROM sys.filegroups;

但是你如何定性地选择一个作为新桌的目的地? <shrug> - 取决于您想要决定的方式,我们不知道。您可以使用此连接确定更多定性信息:

SELECT FileGroupName = fg.name, FileGroupType = fg.type_desc, 
    FileGroupReadOnly = fg.is_read_only, 
    [FileName] = f.name, [FileLocation] = f.physical_name, 
    [FileState] = f.state_desc, f.size, f.max_size, 
    FileReadOnly = f.is_read_only
FROM sys.filegroups AS fg
LEFT OUTER JOIN sys.database_files AS f
ON fg.data_space_id = f.data_space_id
ORDER BY fg.data_space_id;

这将显示每个文件组中的文件,它们的状态/位置/大小,并且在您有未使用的文件组时也会显示(这些行的所有文件列都将为NULL)。因此,这些详细信息可帮助您确定要指定的文件组。

当您决定使用哪个文件组时,您可以说:

CREATE TABLE dbo.foo(...) ON FileGroupName;

您可以在此处查看CREATE TABLE的完整语法。您没有指定版本,因此您可能必须从“其他版本”下拉列表中选择适当的选项。