Hlavní stránka > počítače > MSSQL Shrink všech transakčních logů v instanci

MSSQL Shrink všech transakčních logů v instanci

20.12.2017 (5,577 zobrazení) Komentuj Přejdi na komentáře

Pokud potřebujete shrinknout transakční log všech DB, stačí následující kód.


DROP TABLE #CommandQueue

CREATE TABLE #CommandQueue
(
ID INT IDENTITY ( 1, 1 )
, SqlStatement VARCHAR(1000)
)

INSERT INTO #CommandQueue
(
SqlStatement
)
SELECT
'USE [' + A.name + '] DBCC SHRINKFILE (N''' + B.name + ''' , 1)'
FROM
sys.databases A
INNER JOIN sys.master_files B
ON A.database_id = B.database_id
WHERE
A.name NOT IN ( 'master', 'model', 'msdb', 'tempdb' )

DECLARE @id INT

SELECT @id = MIN(ID)
FROM #CommandQueue

WHILE @id IS NOT NULL
BEGIN
DECLARE @sqlStatement VARCHAR(1000)

SELECT
@sqlStatement = SqlStatement
FROM
#CommandQueue
WHERE
ID = @id

PRINT 'Executing ''' + @sqlStatement + '''...'

EXEC (@sqlStatement)

DELETE FROM #CommandQueue
WHERE ID = @id

SELECT @id = MIN(ID)
FROM #CommandQueue
END

zdroj: https://blogs.msdn.microsoft.com/jjameson/2008/05/30/shrinking-all-database-files-in-sql-server/

trademarks
Categories: počítače Tags: ,
  1. No comments yet.

IMPORTANT! To be able to proceed, you need to solve the following simple math (so we know that you are a human) :-)

What is 5 + 8 ?
Please leave these two fields as-is:

copyright
tour
e-mail
research