As far as I can tell, the only thing that all SQL Server DBAs agree on is that AutoShrink should be turned off. You never even see anyone say, "It depends." This level of agreement is, I think, unique in all of SQL Server-land. I mean, you would think we'd all agree that clustering on a non-sequential GUID is a Very Bad Idea, but there's actually people who argue in favor of it. Go figure. So anyway, the script below will find all the databases (SQL Server 2000 and up) that for some mysterious reason have it turned on. (Of course, we all know the reason is that some yo-yo doesn't understand that big, empty databases run faster than small, full databases, but that's another story...) If you run this script on CMS, it will work across all the servers in the group (that's why we cursor through the resultsets instead of just returning them - it makes the output in CMS much easier to read). -- Find all databases with AutoShrink turned on. declare @DatabaseName sysname if left(convert(nvarchar, serverproperty('productversion')), 1) '8' begin declare cur cursor local fast_forward for select name as 'Database Name' from sys.databases where is_auto_shrink_on = 1 and state_desc = 'ONLINE' and database_id 4 open cur fetch next from cur into @DatabaseName while @@fetch_status = 0 begin print @DatabaseName fetch next from cur into @DatabaseName end close cur deallocate cur end else begin declare cur cursor local fast_forward for select name as 'Database Name' from master..sysdatabases where status & 4194304 = 4194304 and status & 512 = 0 and dbid 4 open cur fetch next from cur into @DatabaseName while @@fetch_status = 0 begin print @DatabaseName fetch next from cur into @DatabaseName end close cur deallocate cur end
↧