• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 348
  • Last Modified:

Defragment a database - how?

The backbone of my database (SQL 2008 Express) is a table that stores photographs in a filestream column. This table accounts for practically all the data in the db, the other tables containing just a few hundred rows of reference data. I created this table and its primary key on a filestream filegroup.

At the outset, I set the database up with a primary filegroup, a secondary one (default for user data) and a filestream filegroup. For a couple of months now I've been repeatedly deleting and repopulating this main table.  Along the way I've encountered quite a bit of unreliability with the filestream technology - sometimes when repopulating the table the db would randomly ignore the filestream group and start saving the data to the secondary filegroup. When this happened the db ran out of space and the process stalled. In this event my solution has always been to drop and recreate the table.

Now my secondary file is over 4GB, its log file is 1.4GB, and I'm out of space unable to run anything.

How do I clean this up?
2 Solutions
Eugene ZCommented:
try to start from db reindex\update stats \dbcc checkdb

please clarify "db ran out of space "? is trn log going out of free space? if yes - let DB in the Simple Recovery
also you said that you are using SQL 2008 Express that has Database Size Limit 4GB

try SQL Server 2008 R2 Express where Database Size Limit Increased to 10GB
or free sql express 2012 http://www.microsoft.com/en-us/sqlserver/editions/2012-editions/express.aspx
lcohanDatabase AnalystCommented:
"Now my secondary file is over 4GB, its log file is 1.4GB, and I'm out of space unable to run anything.

How do I clean this up? "

If is true that you ran everything on SQL 2008 Express then your MAX database size is indeed 4GB therefore

option 1 is to upgrade (maybe even developer edition is good enough for you yet still free)


option 2 you must copy then delete (move) old useless data from the active table. You can create a new for instance call it PhotoArchive database where you put identical table and move old data from active used database table(the big one...).

TimHudspithAuthor Commented:
Thanks for the suggestions but in the end I ran Ola Hallengren's SQL Server Maintenance Solution to clean up my indexes, then ran the shrinkdatabase command, which did the trick.


Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Build your data science skills into a career

Are you ready to take your data science career to the next step, or break into data science? With Springboard’s Data Science Career Track, you’ll master data science topics, have personalized career guidance, weekly calls with a data science expert, and a job guarantee.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now