sp_MSforeachdbを使用してこの問題を解決できると考えていましたが、エラーメッセージが表示されます。
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;
'
PRINT行のコメントを外して上記のクエリを実行すると、システムデータベースを除くすべてのデータベースのリストが表示されます。ただし、ALTER DATABASE行のコメントを外すと、次の2つのエラーメッセージが表示されます。
メッセージ5058、レベル16、状態2、行9
オプション 'AUTO_SHRINK'をデータベース 'master'に設定できません。
メッセージ5058、レベル16、状態1、行9
オプション 'AUTO_SHRINK'をデータベース 'tempdb'に設定できません。
これにより、ある時点で操作が中断され、一部のデータベースのみで自動圧縮が無効になります。
すべてのデータベースで自動縮小を無効にするにはどうすればよいですか?おまけの質問:なぜ私のアプローチが機能しないのですか?