Communities

Writing
Writing
Codidact Meta
Codidact Meta
The Great Outdoors
The Great Outdoors
Photography & Video
Photography & Video
Scientific Speculation
Scientific Speculation
Cooking
Cooking
Electrical Engineering
Electrical Engineering
Judaism
Judaism
Languages & Linguistics
Languages & Linguistics
Software Development
Software Development
Mathematics
Mathematics
Christianity
Christianity
Code Golf
Code Golf
Music
Music
Physics
Physics
Linux Systems
Linux Systems
Power Users
Power Users
Tabletop RPGs
Tabletop RPGs
Community Proposals
Community Proposals
tag:snake search within a tag
answers:0 unanswered questions
user:xxxx search by author id
score:0.5 posts with 0.5+ score
"snake oil" exact phrase
votes:4 posts with 4+ votes
created:<1w created < 1 week ago
post_type:xxxx type of post
Search help
Notifications
Mark all as read See all your notifications »
Q&A

Welcome to Software Development on Codidact!

Will you help us build our independent community of developers helping developers? We're small and trying to grow. We welcome questions about all aspects of software development, from design to code to QA and more. Got questions? Got answers? Got code you'd like someone to review? Please join us.

Comments on How can I can I reduce the size of a SQL Server database after being restored and massive embedded files stripped?

Parent

How can I can I reduce the size of a SQL Server database after being restored and massive embedded files stripped?

+1
−0

My project has the following set up for the production and preproduction ("clone") environment.

  • Production is not accessible at all for the development team, only the preproduction database.
  • Preproduction database is restored each day, but a post-restore script is run to strip away sensitive data such as embedded files (VARBINARY(MAX)) and e-mail addresses
  • This process leaves a preproduction database of about 50GB with 46GB available space which means that a lot of space is wasted

How can I optimize the used storage for the restored database?

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.
Why should this post be closed?

0 comment threads

Post
+1
−0

One way to solve this is to shrink the database and reindex all tables to fix the indexes fragmentation:

DBCC SHRINKDATABASE (TheDatabase);
GO

-- reindexing all tables to optimize performance after the DB shrink
declare @TableSchema varchar(255)
DECLARE @TableName varchar(255) 
 
DECLARE TableCursor CURSOR FOR
SELECT TABLE_SCHEMA, table_name FROM INFORMATION_SCHEMA.TABLES 
WHERE table_type = 'BASE TABLE' 
 
OPEN TableCursor 
FETCH NEXT FROM TableCursor INTO @TableSchema, @TableName 
WHILE @@FETCH_STATUS = 0 
BEGIN
	declare @TN varchar(255) = @TableSchema + '.' + @TableName
	print 'Reindexing ' + @TN
	DBCC DBREINDEX(@TN,' ',90) 
	FETCH NEXT FROM TableCursor INTO @TableSchema, @TableName 
END
 
CLOSE TableCursor 
DEALLOCATE TableCursor
GO

I am not sure if there are any side effects after performing this.

History
Why does this post require attention from curators or moderators?
You might want to add some details to your flag.

1 comment thread

General comments (2 comments)
General comments

What's the size for indexes and tables before and after the operations?

Alexei‭ wrote about 4 years ago

Not sure, but shrink gets the database to 4GB and reindexing gets it to about ~5GB.