Consider the following setup
FG1 FG2 | | ------------ ------------ | | | | F1 F2 F3 F4
If FG are groups of files, and F are separate files.
We have a section whose data, in all likelihood, currently exists in F1 . After we completed the switch, all its data will be within F1 . Although the restriction is limited only to files, the restriction is actually "data must remain inside the same file."
Why? Because we can do all this effectively. We cannot accept extents (or even individual data pages) within F1 and suddenly make them part of F2 (or F3 or F4 ), as these other files may be located on other disks. You cannot say that “this page of this disk is now part of this file located there on another disk” - this is not how the (most traditional) file systems work - certainly those that SQL Server runs on.
And if you need to move through groups of files, you cannot suddenly say that F1 (or part of it) is now part of FG2 , as well, and not belonging to FG1 . Files belong to only one group of files, because File Groups are a layer of control over several functions.
If we want to move a set of rows between two tables, but we want to write it in such a way that there are no restrictions on moving data, we already have tools for this - INSERT and DELETE (maybe write it as one nice combined operator using OUTPUT from DELETE as row source for INSERT ).
Someone from Microsoft could sit down and write an implementation of ALTER TABLE ... SWITCH , which allows you to move data, but they did not see the need to implement this. Instead, they fixed the current limit.
(I’ll notice that I still don’t get involved with “official sources” or really add a lot of new things here, which are impossible to understand from the fact that there are actually file groups, and I hope that someone will have at least some acquaintances before they encounter a situation where they are actually trying to move data between them)