To move a table from one filegroup to another while the system is “live” and “online”, recreate its clustered index… Be sure the target filegroup is already sized to handle the incoming data 🙂
ALTER DATABASE databaseName MODIFY FILE (NAME = datafileLogicalName, SIZE = 2000MB); GO
CREATE CLUSTERED INDEX [i_tableName_cu] ON [dbo].[tableName]
(
[columName] ASC
)
WITH DROP_EXISTING
ON [filegroupName]
GO