Saya pikir saya bisa menggunakan sp_MSforeachdb untuk menyelesaikan masalah ini, tetapi saya mendapatkan pesan kesalahan.
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;
'
Jika saya menjalankan kueri di atas dengan garis CETAK uncommented, saya mendapatkan daftar semua basis data kecuali basis data sistem. Namun, ketika saya batalkan komentar pada baris ALTER DATABASE, saya mendapatkan dua pesan kesalahan ini:
Msg 5058, Level 16, State 2, Line 9
Opsi 'AUTO_SHRINK' tidak dapat diatur dalam database 'master'.
Msg 5058, Level 16,
Status 1, Baris 9 Opsi 'AUTO_SHRINK' tidak dapat diatur dalam database 'tempdb'.
Ini tampaknya menghentikan operasi di beberapa titik, sehingga hanya beberapa database yang otomatis dinonaktifkan.
Adakah yang tahu bagaimana saya bisa menonaktifkan menyusut otomatis pada semua database? Pertanyaan bonus: mengapa pendekatan saya tidak berhasil?
sumber
meskipun ini dijawab, saya hanya akan lebih baik untuk menjatuhkan sedikit baris kode ini yang melakukan penyaringan yang paling diinginkan dan setel AUTO_SHRINK OFF:
sumber