Pensé que podría usar sp_MSforeachdb para resolver este problema, pero recibo un mensaje de error.
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 ejecuto la consulta anterior con la línea PRINT sin comentarios, obtengo una lista de todas las bases de datos excepto las bases de datos del sistema. Sin embargo, cuando descomento la línea ALTER DATABASE, recibo estos dos mensajes de error:
Msg 5058, Nivel 16, Estado 2, Línea 9 La
opción 'AUTO_SHRINK' no se puede configurar en la base de datos 'maestro'.
Msg 5058, Nivel 16, Estado 1, Línea 9 La
opción 'AUTO_SHRINK' no se puede configurar en la base de datos 'tempdb'.
Esto parece interrumpir la operación en algún momento, de modo que solo algunas de las bases de datos se deshabilitan automáticamente.
¿Alguna idea de cómo puedo desactivar la reducción automática en todas las bases de datos? Pregunta extra: ¿por qué mi enfoque no funciona?
fuente
aunque esto es respondido, pensé que sería bueno dejar caer esta pequeña línea de código que hace exactamente el filtrado que la mayoría de la gente quiere y desactiva AUTO_SHRINK:
fuente