Ho pensato di poter usare sp_MSforeachdb per risolvere questo problema, ma ho ricevuto un messaggio di errore.
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;
'
Se eseguo la query sopra con la riga PRINT senza commenti, ottengo un elenco di tutti i database ad eccezione dei database di sistema. Tuttavia, quando decomprimere la riga ALTER DATABASE, ottengo questi due messaggi di errore:
Messaggio 5058, livello 16, stato 2, riga 9 L'
opzione "AUTO_SHRINK" non può essere impostata nel database "master".
Messaggio 5058, livello 16, stato 1, riga 9 L'
opzione 'AUTO_SHRINK' non può essere impostata nel database 'tempdb'.
Questo sembra interrompere l'operazione ad un certo punto, in modo che solo alcuni dei database vengano disabilitati con la riduzione automatica.
Hai idea di come posso disabilitare la riduzione automatica su tutti i database? Domanda bonus: perché il mio approccio non funziona?