Ich dachte, ich könnte sp_MSforeachdb verwenden, um dieses Problem zu lösen, aber ich erhalte eine Fehlermeldung.
sp_MSforeachdb '
BEGIN
USE [?]
DECLARE @dbid INT
SET @dbid = DB_ID()
IF(@dbid > 4)
BEGIN
--PRINT ''[?]'' + CONVERT(VARCHAR, @dbid)
--ALTER DATABASE [?] SET AUTO_SHRINK OFF
END
END;
'
Wenn ich die obige Abfrage mit der PRINT-Zeile ohne Kommentar ausführe, wird eine Liste aller Datenbanken mit Ausnahme der Systemdatenbanken angezeigt. Wenn ich jedoch die Zeile ALTER DATABASE auskommentiere, werden folgende zwei Fehlermeldungen angezeigt:
Meldung 5058, Ebene 16,
Status 2, Zeile 9 Die Option 'AUTO_SHRINK' kann nicht in der Datenbank 'master' festgelegt werden.
Meldung 5058, Ebene 16,
Status 1, Zeile 9 Option 'AUTO_SHRINK' kann nicht in der Datenbank 'tempdb' festgelegt werden.
Dies scheint den Vorgang irgendwann zu unterbrechen, so dass nur einige der Datenbanken automatisch verkleinert werden.
Irgendeine Idee, wie ich das automatische Verkleinern für alle Datenbanken deaktivieren kann? Bonusfrage: Warum funktioniert mein Ansatz nicht?
quelle
Obwohl dies beantwortet wird, wäre es schön, diese kleine Codezeile zu löschen, die genau die Filterung ausführt, die die meisten Leute wollen, und AUTO_SHRINK auf OFF setzt:
quelle