MSSQL Spazio Disco: differenze tra le versioni
Jump to navigation
Jump to search
(Creata pagina con "<pre> SET NOCOUNT ON; DECLARE @DbName NVARCHAR(255); DECLARE @LogFileName NVARCHAR(255); DECLARE @SQL NVARCHAR(MAX); DECLARE db_cursor CURSOR FOR SELECT d.name, f.name FROM sys.databases d JOIN sys.master_files f ON d.database_id = f.database_id WHERE f.type = 1 AND d.name NOT IN ('master', 'model', 'msdb', 'tempdb') AND d.state_desc = 'ONLINE'; -- Lavoriamo solo su DB online OPEN db_cursor; FETCH NEXT FROM db_cursor INTO @DbName, @LogFileName; WHILE @@FETCH_S...") |
Nessun oggetto della modifica |
||
| Riga 41: | Riga 41: | ||
[[Categoria:Database]] |
[[Categoria:Database]] |
||
[[Categoria:MS SQL Server]] |
|||
Versione delle 09:18, 13 lug 2026
SET NOCOUNT ON;
DECLARE @DbName NVARCHAR(255);
DECLARE @LogFileName NVARCHAR(255);
DECLARE @SQL NVARCHAR(MAX);
DECLARE db_cursor CURSOR FOR
SELECT d.name, f.name
FROM sys.databases d
JOIN sys.master_files f ON d.database_id = f.database_id
WHERE f.type = 1
AND d.name NOT IN ('master', 'model', 'msdb', 'tempdb')
AND d.state_desc = 'ONLINE'; -- Lavoriamo solo su DB online
OPEN db_cursor;
FETCH NEXT FROM db_cursor INTO @DbName, @LogFileName;
WHILE @@FETCH_STATUS = 0
BEGIN
PRINT 'Tentativo di shrink per il database: ' + @DbName;
-- Eseguiamo il checkpoint per forzare il flush delle pagine
SET @SQL = 'USE [' + @DbName + ']; CHECKPOINT;';
EXEC sp_executesql @SQL;
-- Eseguiamo lo shrink del file di log
-- Non forziamo 1MB, lasciamo che SQL decida quanto è effettivamente restringibile
SET @SQL = 'USE [' + @DbName + ']; DBCC SHRINKFILE (''' + @LogFileName + ''');';
EXEC sp_executesql @SQL;
FETCH NEXT FROM db_cursor INTO @DbName, @LogFileName;
END
CLOSE db_cursor;
DEALLOCATE db_cursor;
GO