Just a basic question due to my lack of understanding on how below works:

For one of the databases around 1 TB in size we have 8 file groups with multiple files added to them.

Now for one of the FG say FG1 there are 3 files :

FilesFG1a-has max growth restricted to 150 GB and 130 GB is used with 20 free
FilesFG1b-has max growth restricted to 150 GB and 150GB is used with 0 free
FilesFG1c-has max growth restricted to 150 GB and 150GB is used with 0 free

Now the operation will continue to work as we have 20 GB still out there on FilesFG1a but what happens when all 3 files are full within that FG1 file group?

I know we can increase the max growth restr. value as space is there on disk. But if not, will there be failures or operation tends to move data into mdf files instead of going to ndf files ?

2 Answers 2


Every table or index has at least one partition. Each partition is stored on a single filegroup*. So when that filegroup is full and none of its files can be expanded, any operation that needs to allocate additional space for a partition that is stored on that filegroup will fail.

*Except that a table can be configured to store its blob data on a separate database filegroup, or filesream filegroup.

  • Worth noting that blobs cannot be moved online. You have to recreate the table to change them.
    – clifton_h
    Dec 1, 2018 at 21:33

SQL Server uses a proportional fill for storing data into the data files in the file group. In other words it tries to keep the used data size in each file as equal as possible but in your example it will continually write to the only file in the file group with space. Once space is exhausted from all of the available files and no more growths are possible you will start receiving errors for any statement that tries to add more data.

File groups are used to place data from a table, indexed view or index on a table into a specific set of files. This is done by specifying a value for the file group in your DDL SQL statement.

With regards to mdf vs ndf files, those extensions, if used the way they are intended, simply indicate visual what is the starting file for the database.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.