Ich verwende das folgende Skript, um die Protokolldateien einer Datenbank zu kürzen. Aber ich muss die folgenden Skript-Ergebnisse in einem separaten Fenster ausführen, deshalb kann ich die Jobs nicht planen.Wie mache ich abschneiden Log-Skript als dynamische SQL in SQL Server?
SET NOCOUNT ON
SELECT
'USE [' + d.name + N']' + CHAR(13) + CHAR(10)
+ 'DBCC SHRINKFILE (N''' + mf.name + N''' , 0, TRUNCATEONLY)'
+ CHAR(13) + CHAR(10) + CHAR(13) + CHAR(10)
FROM
sys.master_files mf
JOIN sys.databases d
ON mf.database_id = d.database_id
WHERE d.database_id > 4 and mf.type_desc = 'LOG'
Erwartete O/P-Skript statt Kopie auszuführen hat die obige Abfrage einfügen Ergebnisse
Eine Alternative zum dynamischen SQL ist SQL Server Wartungspläne zu verwenden. Jeder Plan ist ein SSIS-Paket, das vom SQL-Agenten zu einem festgelegten Zeitpunkt ausgeführt wird. Hier ist ein Link zu den [MS Docs] (https://msdn.microsoft.com/en-us/library/ms187658.aspx). –
Wenn Sie keine Wartungspläne verwenden können ... Suchen Sie etwas so einfaches wie [sp_executesql] (https://msdn.microsoft.com/en-us/library/ms188001.aspx)? Sie würden dies in Verbindung mit einem Cursor verwenden. – SMM