Shrink Database

Code snippets for shrinking database and database log files for EC2 and OnPrem.

This will not work on AWS RDS databases.

Log File

USE DBNAME; 
ALTER DATABASE DBNAME SET RECOVERY SIMPLE;
DBCC SHRINKFILE (DBNAME_log, 1);
ALTER DATABASE DBNAME SET RECOVERY FULL;

Data File

Click on database and navigate to REPORTS / STANDARD REPORTS / DISK USAGE and verify that there is UNALLOCATED SPACE that can be removed.

use master;
ALTER DATABASE [SSISDB] SET RECOVERY SIMPLE WITH NO_WAIT

When this is the SSISDB, I consider reducing the default RETENTION WINDOW of 365 days to something less, like 30 or 7. Then I make sure CLEANUP is enabled.

Use ssisdb;
EXEC [SSISDB].[catalog].[configure_catalog] @property_name=N'RETENTION_WINDOW', @property_value=7;

select * from [catalog].catalog_properties

I DISABLE all SQL AGENT JOBS that use this database.

For the SSISDB only, I run the CLEANUP command.

use ssisdb;
EXEC [internal].[cleanup_server_retention_window];

Click on the database and navigate to: TASKS / SHRINK / DATABASE

Alternatively I sometimes run this code:

use ssisdb;
DBCC SHRINKDATABASE(N'SSISDB', 5 );

Then I remember to reset the RECOVERY to FULL.

use master;
ALTER DATABASE [SSISDB] SET RECOVERY FULL WITH NO_WAIT;

Last, I ENABLE the SQL AGENT JOBS that I disabled earlier.