<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=SQL_Server_Shrink_Database_T-SQL_Code</id>
	<title>SQL Server Shrink Database T-SQL Code - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.alikaravi.ir/index.php?action=history&amp;feed=atom&amp;title=SQL_Server_Shrink_Database_T-SQL_Code"/>
	<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=SQL_Server_Shrink_Database_T-SQL_Code&amp;action=history"/>
	<updated>2026-06-22T13:40:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://wiki.alikaravi.ir/index.php?title=SQL_Server_Shrink_Database_T-SQL_Code&amp;diff=151&amp;oldid=prev</id>
		<title>Karavi: Created page with &quot; The procedure joins sys.databases and sys.master_files system views in order to generate the CHECKPOINT and DBCC SHRINKFILE statement for all the user databases. It filters the system databases (DBID &gt; 4) because these statements are not recommended for the system databases.    -- =================================================================================   -- Author:         Eli Leiba   -- Create date:    2020-03  -- Procedure Name: dbo.usp_ShrinkAllLogsExcludeSy...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.alikaravi.ir/index.php?title=SQL_Server_Shrink_Database_T-SQL_Code&amp;diff=151&amp;oldid=prev"/>
		<updated>2025-09-01T03:35:10Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot; The procedure joins sys.databases and sys.master_files system views in order to generate the CHECKPOINT and DBCC SHRINKFILE statement for all the user databases. It filters the system databases (DBID &amp;gt; 4) because these statements are not recommended for the system databases.    -- =================================================================================   -- Author:         Eli Leiba   -- Create date:    2020-03  -- Procedure Name: dbo.usp_ShrinkAllLogsExcludeSy...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt; The procedure joins sys.databases and sys.master_files system views in order to generate the CHECKPOINT and DBCC SHRINKFILE statement for all the user databases. It filters the system databases (DBID &amp;gt; 4) because these statements are not recommended for the system databases.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
 -- ================================================================================= &lt;br /&gt;
 -- Author:         Eli Leiba &lt;br /&gt;
 -- Create date:    2020-03&lt;br /&gt;
 -- Procedure Name: dbo.usp_ShrinkAllLogsExcludeSysDBS &lt;br /&gt;
 -- Description:    This procedure shrinks all user databases log files or a specific user database log &lt;br /&gt;
 -- ================================================================================== &lt;br /&gt;
 CREATE PROCEDURE dbo.usp_ShrinkAllLogsExcludeSysDBS (@dbname SYSNAME = &amp;#039;%&amp;#039;)&lt;br /&gt;
 AS&lt;br /&gt;
 BEGIN&lt;br /&gt;
 &lt;br /&gt;
 DECLARE @TSQLExec VARCHAR (MAX) = &amp;#039;&amp;#039;;&lt;br /&gt;
 SET NOCOUNT ON;&lt;br /&gt;
 &lt;br /&gt;
 IF OBJECT_ID(&amp;#039;tempdb..#Temp&amp;#039;) IS NOT NULL&lt;br /&gt;
       DROP TABLE #temp&lt;br /&gt;
 CREATE TABLE #temp (dbname sysname, dbid int, logFileSizeBeforeMB decimal(15,2), logFileSizeAfterMB decimal(15,2));&lt;br /&gt;
 WITH fs&lt;br /&gt;
 AS&lt;br /&gt;
 (&lt;br /&gt;
    SELECT database_id, TYPE, SIZE * 8.0 / 1024 SIZE&lt;br /&gt;
    FROM sys.master_files&lt;br /&gt;
 )&lt;br /&gt;
 INSERT INTO #temp (dbname, dbid, logFileSizeBeforeMB)&lt;br /&gt;
 SELECT &lt;br /&gt;
    name, database_id,&lt;br /&gt;
    (SELECT SUM(SIZE) FROM fs WHERE TYPE = 1 AND fs.database_id = db.database_id) LogFileSizeMB&lt;br /&gt;
 FROM sys.databases db&lt;br /&gt;
 WHERE database_id &amp;gt; 4&lt;br /&gt;
 AND NAME LIKE @dbname;&lt;br /&gt;
 &lt;br /&gt;
 SELECT @TSQLExec = CONCAT (&lt;br /&gt;
  @TSQLExec,&lt;br /&gt;
  &amp;#039;USE [&amp;#039;,&lt;br /&gt;
  d.NAME,&lt;br /&gt;
  &amp;#039;]; CHECKPOINT; DBCC SHRINKFILE ([&amp;#039;,&lt;br /&gt;
  f.NAME + &amp;#039;]) with no_infomsgs;&amp;#039; ,&lt;br /&gt;
  Char (13),Char (10))&lt;br /&gt;
 FROM sys.databases d,&lt;br /&gt;
     sys.master_files f&lt;br /&gt;
 WHERE d.database_id = f.database_id&lt;br /&gt;
      AND d.database_id &amp;gt; 4&lt;br /&gt;
      AND f.type = 1&lt;br /&gt;
      AND d.NAME LIKE @dbname;&lt;br /&gt;
 PRINT @TSQLExec;&lt;br /&gt;
 EXEC (@TSQLExec);&lt;br /&gt;
 &lt;br /&gt;
 WITH fs&lt;br /&gt;
 AS&lt;br /&gt;
 (&lt;br /&gt;
    SELECT database_id, TYPE, SIZE * 8.0 / 1024 SIZE&lt;br /&gt;
    FROM sys.master_files&lt;br /&gt;
 )&lt;br /&gt;
 UPDATE a&lt;br /&gt;
 set a.logFileSizeAfterMB = (SELECT SUM(SIZE) FROM fs WHERE TYPE = 1 AND fs.database_id = db.database_id)&lt;br /&gt;
 FROM #temp a&lt;br /&gt;
 inner join sys.databases db on a.dbid = db.database_id&lt;br /&gt;
 WHERE database_id &amp;gt; 4&lt;br /&gt;
 AND NAME LIKE @dbname&lt;br /&gt;
 &lt;br /&gt;
 SELECT * FROM #temp ORDER BY dbname&lt;br /&gt;
 SET NOCOUNT OFF;&lt;br /&gt;
 END;&lt;br /&gt;
 GO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Here are examples for executing this stored procedure:&lt;br /&gt;
 -- shrink database log for all user databases&lt;br /&gt;
 USE master&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC dbo.usp_ShrinkAllLogsExcludeSysDBS &lt;br /&gt;
 GO&lt;br /&gt;
 -- shrink database log for just database Test2&lt;br /&gt;
 USE master&lt;br /&gt;
 GO&lt;br /&gt;
 EXEC dbo.usp_ShrinkAllLogsExcludeSysDBS &amp;#039;Test2&amp;#039;&lt;br /&gt;
 GO&lt;/div&gt;</summary>
		<author><name>Karavi</name></author>
	</entry>
</feed>