Tôi hy vọng bạn có thể chỉ cho tôi đi đúng hướng. Tôi không phải là người thường xuyên sử dụng T-SQL, nhưng tôi đã thực hiện một số thao tác tìm kiếm trên google và tìm thấy tập lệnh bên dưới. Tôi sửa kịch bản một chút.
Tôi muốn kịch bản:
- Để chọn tất cả các cơ sở dữ liệu, ngoại trừ các DB hệ thống.
- Để thiết lập phục hồi thành đơn giản.
- Để thu nhỏ các tệp nhật ký cho mọi db (.ldf), ngoại trừ db hệ thống
Kịch bản:
USE MASTER
declare
@isql varchar(2000),
@dbname varchar(64)
declare c1 cursor for select name from master..sysdatabases where name not in ('master','model','msdb','tempdb','ReportServer','ReportServerTempDB')
open c1
fetch next from c1 into @dbname
While @@fetch_status <> -1
begin
select @isql = 'ALTER DATABASE @dbname SET RECOVERY SIMPLE'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='USE @dbname checkpoint'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
select @isql='DBCC SHRINKFILE @dbname.ldf'
select @isql = replace(@isql,'@dbname',@dbname)
print @isql
exec(@isql)
fetch next from c1 into @dbname
end
close c1
deallocate c1
Tại sao, tại sao, tại sao? Ngoài ra "đúng hướng" là gì? Liệu kịch bản không hoạt động? Nếu vậy thì thế nào? Bạn có nhận được một thông báo lỗi? Nó là gì? Có lẽ cần một lệnh USE trong khối cuối cùng. Nhưng một lần nữa: Tại sao, tại sao, tại sao?
—
Aaron Bertrand
Bởi vì các tệp .ldf chiếm 70% dung lượng đĩa trên máy chủ. Nhưng nếu bạn biết một cách tốt hơn, xin hãy khai sáng cho tôi. Tôi không biết nếu kịch bản hoạt động, tôi không thể chạy nó. Tôi phải chắc chắn rằng nó hoạt động đầu tiên, vì nó là một môi trường sản xuất.
—
Arviddk
Bạn không có môi trường phát triển hoặc thử nghiệm nơi bạn có thể kiểm tra điều này? Thành thật mà nói tôi sẽ không lấy bất cứ thứ gì từ đây, bất kể ai đã viết nó, và áp dụng nó vào sản xuất chỉ dựa trên sự đảm bảo của những người lạ trên Internet ...
—
Aaron Bertrand
@Arviddk Bạn có biết hậu quả của việc thay đổi mô hình khôi phục từ FULL / BULK LOGGED thành SIMPLE là gì không? Nếu bạn nhận thức được, hãy tiếp tục và làm điều đó.
—
BuahahaXD
Tôi chỉ muốn bình luận về lý do tại sao cho những độc giả tương lai có thể đang muốn làm điều tương tự. Chúng tôi đã từng thực hiện sao lưu SQL đầy đủ với sao lưu nhật ký giao dịch. Kể từ đó, chúng tôi đã thay đổi sử dụng Dell AppAssure để thực hiện sao lưu, đưa chúng tôi vào một nơi mà chúng tôi không cần sao lưu nhật ký giao dịch. Bây giờ chúng tôi còn lại với hàng trăm cơ sở dữ liệu trên nhiều máy chủ vẫn được đặt đầy đủ với terabyte tệp LDF mà không có lý do. Điều này ảnh hưởng đến sao lưu / khôi phục cũng như những thứ khác xung quanh đó, sao chép và như vậy.
—
Thorin