Add_Filegroup_and_Table

Snippet Name: Add_Filegroup_and_Table

Tags:

Created Date: 2025-06-16 13:12:40
Last Modified Date: 2025-05-31 10:32:19

Dependencies:

DBA Notes:

Sample Output:

Title: Add Filegroup and Table
Author: user
i have  a SQL Server database that is  running out of space. i want to add a file and file group on the database CIGDataMart_Docs on a disk location  I:\MSSQL\Data\, and when i create a table with this schema, to make sure it is located on the new drive. can you help me script that out. CREATE TABLE [dbo].[Application_DecisionInfo_Xml] ( 
[AppId]       INT                                     NOT NULL,
[InfoStatus]  NVARCHAR(25)                            NOT NULL,
[XmlData]     XML                                         NULL,
CONSTRAINT   [PK_Application_Decision_Xml]  PRIMARY KEY CLUSTERED    ([AppId] asc, [InfoStatus] asc)  WITH (DATA_COMPRESSION = PAGE ))

Author: ChatGPT
Absolutely, Lowell. Here's a step-by-step script to:

1. **Create a new filegroup** on the database.
2. **Add a data file** on the `I:\MSSQL\Data\` path to the new filegroup.
3. **Create your table** on that filegroup so that its data is stored on the new drive.

---

### ??? Step-by-step SQL Server Script

```sql
USE [master];
GO

-- 1. Add a new filegroup to the database
ALTER DATABASE [CIGDataMart_Docs]
ADD FILEGROUP [FG_XmlData_I];
GO

-- 2. Add a new file to that filegroup on the I: drive
ALTER DATABASE [CIGDataMart_Docs]
ADD FILE (
    NAME = N'CIGDataMart_Docs_XmlData_I',
    FILENAME = N'I:\MSSQL\Data\CIGDataMart_Docs_XmlData_I.ndf',
    SIZE = 512MB,
    FILEGROWTH = 128MB
) TO FILEGROUP [FG_XmlData_I];
GO

-- 3. Create the table on the new filegroup
USE [CIGDataMart_Docs];
GO

CREATE TABLE [dbo].[Application_DecisionInfo_Xml] 
( 
    [AppId]       INT            NOT NULL,
    [InfoStatus]  NVARCHAR(25)   NOT NULL,
    [XmlData]     XML            NULL,
    CONSTRAINT [PK_Application_Decision_Xml] 
        PRIMARY KEY CLUSTERED ([AppId] ASC, [InfoStatus] ASC)
        WITH (DATA_COMPRESSION = PAGE)
) 
ON [FG_XmlData_I];  -- Target the filegroup explicitly
GO
```

---

### ???? Notes:

- `FILEGROWTH = 128MB` can be tuned based on your growth expectations.
- If you're planning to store only XML-heavy or rarely-used tables here, you could even consider secondary compression options or partitioning.
- The `[FG_XmlData_I]` filegroup name is arbitrary???feel free to rename it if you have a naming convention.

Let me know if you want the XML column to be stored separately using a **XML filegroup** (`FILESTREAM`-like behavior) or need to make this table **partitioned** for future growth planning.


Leave a Reply