Author | Adam Lancaster, github.com/lancasteradam |
Availability | Windows, Linux, macOS |
Want to see the source code for this command? Check out New-DbaDbFileGroup on GitHub.
Want to see the Bill Of Health for this command? Check out New-DbaDbFileGroup.
Creates new filegroups in SQL Server databases for custom data storage organization.
Creates a new filegroup for the specified database(s), supporting standard row data, FileStream, and memory-optimized storage types. This is useful when you need to separate table storage across different disk drives for performance optimization, implement compliance requirements, or organize data by department or function. The filegroup is created empty and requires adding data files with Add-DbaDbFile before it can store data. Use Set-DbaDbFileGroup to configure advanced properties like read-only status or default settings after files are added.
New-DbaDbFileGroup
[[-SqlInstance] <DbaInstanceParameter[]>]
[[-SqlCredential] <PSCredential>]
[[-Database] <String[]>]
[[-FileGroup] <String>]
[[-FileGroupType] <String>]
[[-InputObject] <Database[]>]
[-EnableException]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
PS C:\> New-DbaDbFileGroup -SqlInstance sqldev1 -Database TestDb -FileGroup HRFG1
Creates the HRFG1 filegroup on the TestDb database on the sqldev1 instance with the default options for the filegroup.
PS C:\> New-DbaDbFileGroup -SqlInstance sqldev1 -Database TestDb -FileGroup HRFG1 -FileGroupType FileStreamDataFileGroup
Creates a filestream filegroup named HRFG1 on the TestDb database on the sqldev1 instance.
PS C:\> New-DbaDbFileGroup -SqlInstance sqldev1 -Database TestDb -FileGroup HRFG1 -FileGroupType MemoryOptimizedDataFileGroup
Creates a MemoryOptimized data filegroup named HRFG1 on the TestDb database on the sqldev1 instance.
PS C:\> Get-DbaDatabase -SqlInstance sqldev1 -Database TestDb | New-DbaDbFileGroup -FileGroup HRFG1
Passes in the TestDB database via pipeline and creates the HRFG1 filegroup on the TestDb database on the sqldev1 instance.
The target SQL Server instance or instances. This can be a collection and receive pipeline input to allow the function
to be executed against multiple SQL Server instances.
Alias | |
Required | False |
Pipeline | false |
Default Value |
Login to the target instance using alternative credentials. Accepts PowerShell credentials (Get-Credential).
Windows Authentication, SQL Server Authentication, Active Directory - Password, and Active Directory - Integrated are all supported.
For MFA support, please use Connect-DbaInstance.
Alias | |
Required | False |
Pipeline | false |
Default Value |
Specifies the database(s) where the new filegroup will be created. Supports multiple database names for bulk operations.
Use this when you need to create the same filegroup structure across multiple databases for consistency.
Alias | |
Required | False |
Pipeline | false |
Default Value |
Sets the name for the new filegroup being created. The name must be unique within the database and follow SQL Server naming conventions.
Use descriptive names like 'HR_Data' or 'Archive_FG' to indicate the data's purpose or department for better organization.
Alias | |
Required | False |
Pipeline | false |
Default Value |
Defines the storage type for the filegroup: RowsFileGroup for regular tables and indexes, FileStreamDataFileGroup for FILESTREAM data like documents and images, or MemoryOptimizedDataFileGroup for
In-Memory OLTP tables.
Most scenarios use the default RowsFileGroup unless you're specifically implementing FILESTREAM or In-Memory OLTP features.
Alias | |
Required | False |
Pipeline | false |
Default Value | RowsFileGroup |
Accepted Values | FileStreamDataFileGroup,MemoryOptimizedDataFileGroup,RowsFileGroup |
Accepts database objects from Get-DbaDatabase for pipeline operations. This enables you to filter databases first, then create filegroups on the selected ones.
Useful when working with multiple databases that match specific criteria rather than specifying database names directly.
Alias | |
Required | False |
Pipeline | true (ByValue) |
Default Value |
By default, when something goes wrong we try to catch it, interpret it and give you a friendly warning message.
This avoids overwhelming you with "sea of red" exceptions, but is inconvenient because it basically disables advanced scripting.
Using this switch turns this "nice by default" feature off and enables you to catch exceptions with your own try/catch.
Alias | |
Required | False |
Pipeline | false |
Default Value | False |
Shows what would happen if the command were to run. No actions are actually performed.
Alias | wi |
Required | False |
Pipeline | false |
Default Value |
Prompts you for confirmation before executing any changing operations within the command.
Alias | cf |
Required | False |
Pipeline | false |
Default Value |