在非默认文件组上创建表

7
标题已经很明确了,我创建了一个新的文件组"ArchiveFileGroup":
ALTER DATABASE MyDataBase
ADD FILEGROUP ArchiveFileGroup;
GO

我希望创建一个名为arc_myTable的表,以存储来自myTable的旧数据。
我使用了以下查询语句:
CREATE TABLE [dbo].acr_myTable(
    [Id] [bigint] NOT NULL,
    [label] [nvarchar](max) NOT NULL,
)on ArchiveFileGroup 

我不确定这是否是正确的方法,也不知道FileGroup创建在哪里以检查它是否包含该表。


1
如果您正在使用SSMS,则它将显示表的文件组。在对象资源管理器表属性中,选择“存储”。 - Jim H.
4个回答

7
你可以使用这个SQL查询轻松检查:
SELECT o.[name], o.[type], i.[name], i.[index_id], f.[name]
FROM sys.indexes i
INNER JOIN sys.filegroups f
ON i.data_space_id = f.data_space_id
INNER JOIN sys.all_objects o
ON i.[object_id] = o.[object_id]
WHERE i.data_space_id = f.data_space_id
AND o.type = 'U' -- User Created Tables
GO

只需添加:

AND f.name = ArchiveFileGroup

如果要查看新文件组中的所有内容,可以执行以下操作:

AND o.name = acr_myTable

查看您的表位于何处。

如果您从未向文件组添加过文件,则我预计会出现错误,但您没有包含任何错误消息或任何说明您已创建文件。如果您没有创建文件,则建议在需要时从 Microsoft 文档 开始。

此帖对于尝试在其文件组中创建新文件的 OP 非常有用。这里


实际上,当我检查FILEGROUP的属性时,它没有添加任何文件,大小为0Mb。我认为在创建FILEGROUP时,默认情况下会添加文件。我不知道如何添加这个文件。我会查看文档。谢谢! - GSDa
@GSDa,你确定吗?根据你的帖子,我看到你已经在该文件组上创建了一个表。顺便问一下,这是一个空表吗?如果是,那么可能可以这样做。 - Rahul
@Rahul 是的,你说得对,它是空的,我无法添加一行。错误显示文件组中没有添加文件。 - GSDa
@GSDa,如果您希望的话,可以将其作为单独的问题发布。 - Rahul
我找到了一个解决方案,可能会对其他人有所帮助。以下是如何将文件添加到现有的FILEGROUP:http://forums.asp.net/t/1397838.aspx?The+filegroup+comn_data+has+no+files+assigned+to+it+sql - GSDa

2

1
这是一篇旧文章,想要添加信息,或许能帮助未来的某个人。
使用sp_help <table_name>命令,你可以查看表创建在哪个文件组上。

0

注意:您可以通过右键单击表格,然后选择属性来进行检查。在存储中,您可以看到新表所属的文件组。

在您的情况下: 它将在默认文件组上创建表,而不是在您创建的新文件组上。文件组是逻辑上使用的用于创建辅助文件的。例如,如果您需要在与默认驱动器不同的位置创建表,则必须为新文件组定义fileName。

ALTER DATABASE [db] ADD FILEGROUP [NewFileGroup]

ALTER DATABASE [db] ADD FILE ( NAME = N'NewFile', FILENAME = N':D\..\Newfile.ndf' , SIZE = 8192KB , FILEGROWTH = 65536KB ) TO FILEGROUP [NewFileGroup]

前往


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接