Tôi hình dung tôi có thể sử dụng sp_MSforeachdb để giải quyết vấn đề này, nhưng tôi nhận được thông báo lỗi.
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;
'
Nếu tôi chạy truy vấn trên với dòng PRINT không bị lỗi, tôi nhận được một danh sách tất cả các cơ sở dữ liệu ngoại trừ cơ sở dữ liệu hệ thống. Tuy nhiên, khi tôi bỏ ghi chú dòng ALTER DATABASE, tôi nhận được hai thông báo lỗi sau:
Msg 5058, Cấp 16, Trạng thái 2, Dòng 9
Tùy chọn 'AUTO_SHRINK' không thể được đặt trong cơ sở dữ liệu 'chính'.
Msg 5058, Cấp 16, Trạng thái 1, Dòng 9
Tùy chọn 'AUTO_SHRINK' không thể được đặt trong cơ sở dữ liệu 'tempdb'.
Điều này dường như phá vỡ hoạt động tại một số điểm, do đó chỉ một số cơ sở dữ liệu bị tự động thu nhỏ.
Bất kỳ ý tưởng làm thế nào tôi có thể vô hiệu hóa tự động thu nhỏ trên tất cả các cơ sở dữ liệu? Câu hỏi thưởng: tại sao cách tiếp cận của tôi không hiệu quả?