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?
la source
bien que cela soit répondu, je pensais que ce serait bien de supprimer cette petite ligne de code qui fait exactement le filtrage que la plupart des gens veulent et désactive AUTO_SHRINK:
la source