J'ai pensé que je pouvais utiliser sp_MSforeachdb pour résoudre ce problème, mais je reçois un message d'erreur.
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;
'
Si j'exécute la requête ci-dessus avec la ligne PRINT sans commentaire, j'obtiens une liste de toutes les bases de données à l'exception des bases de données système. Cependant, lorsque je décommente la ligne ALTER DATABASE, j'obtiens ces deux messages d'erreur:
Msg 5058, niveau 16, état 2, ligne 9 L'
option 'AUTO_SHRINK' ne peut pas être définie dans la base de données 'master'.
Msg 5058, niveau 16, état 1, ligne 9 L'
option 'AUTO_SHRINK' ne peut pas être définie dans la base de données 'tempdb'.
Cela semble interrompre l'opération à un moment donné, de sorte que seules certaines des bases de données sont désactivées automatiquement.
Une idée de comment désactiver la réduction automatique sur toutes les bases de données? Question bonus: pourquoi mon approche ne fonctionne-t-elle pas?