我以为可以使用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行时,出现以下两个错误消息:
消息5058,级别16,状态2,行9
无法在数据库“ master”中设置选项“ AUTO_SHRINK”。
消息5058,级别16,状态1,行9
无法在数据库“ tempdb”中设置选项“ AUTO_SHRINK”。
这似乎在某种程度上破坏了该操作,因此只有部分数据库被禁用了自动收缩。
知道如何在所有数据库上禁用自动收缩吗?额外的问题:为什么我的方法不起作用?