SQL Server 2008 veritabanındaki işlem günlüğünü nasıl kısaltırım?


9

SQL Server 2008 veritabanındaki işlem günlüğünü nasıl kısaltırım?

Olası en iyi yollar nelerdir?

Bunu aşağıdaki gibi bir blogdan denedim:

1) Ayar veritabanından basit kurtarmaya, dosyayı daraltmaya ve bir kez daha tam kurtarma ayarına kadar, aslında değerli günlük verilerinizi kaybediyorsunuz ve zamanında geri yükleyemeyeceksiniz. Sadece bu değil, sonraki günlük dosyalarını da kullanamazsınız.

2) Veritabanı dosyası veya veritabanının daralması parçalanma ekler.

Yapabileceğiniz birçok şey var. İlk olarak, kısaltmak ve sık sık kaybetmek yerine aşağıdaki komutu kullanarak uygun günlük yedeğini almaya başlayın.

BACKUP LOG [TestDb] TO  DISK = N'C:\Backup\TestDb.bak'
GO

Dosyayı KÜÇÜLTME kodunu kaldırın. Doğru günlük yedeklemeleri alıyorsanız, günlük dosyanız genellikle (yine genellikle özel durumlar hariç tutulur) çok büyümez.


2
Tamam, ve bunu denediğinde ne oldu?

Yanıtlar:


4

Veritabanı Tam Kurtarma Modundaysa bir günlük dosyasını kısaltmanın en güvenli ve doğru yolu bir İşlem Günlüğü Yedeklemesi yapmaktır (olmadan TRUNCATE_ONLY. Bu, sonraki sürümlerde kullanımdan kaldırılacak ve önerilmez).

Daha sonra günlük dosyanızı küçültmek istediğiniz anlaşılıyor, bu durumda bir DBCC SHRINKFILE(yourTLogName)komut çalıştırırsınız . İstenen boyutun küçültülmesi için isteğe bağlı ikinci bir parametre vardır.


8

Günlüğü boş aygıta yedekleyebilirsiniz:

backup log [databasename] to disk = 'nul';

Veya kurtarma modelini basit olarak ve sonra tekrar tam / toplu olarak değiştirebilirsiniz.


Bu konuda + bir tane yaptım çünkü bu dbas araç kutusunda bir araç ve cevabın olumsuz oyları hak etmediğini düşünüyorum. Ben en iyi yolu transactionlog yedek almak olduğunu kabul ediyorum ama hey tüm iyi araçlar doğru bir şekilde veya kötü bir şekilde kullanılabilir.
Martin Sjöberg

6

Günlük verilerinizle ilgilenmiyorsanız ve yalnızca bunlardan kurtulmak istiyorsanız:

Kurtarma modelini doludan sade ve sonra tam olarak değiştirin. TRUNCATEONLY bağımsız değişkeniyle DBCC SHRINKFILE dosyasını kullanarak dosyayı daraltın

Aşağıdaki komut kurtarma modelini doludan basit hale getirecektir

ALTER DATABASE <databse_name> SET RECOVERY SIMPLE

Aşağıdaki komut kurtarma modelini tam olarak değiştirir

ALTER DATABASE <databse_name> SET RECOVERY FULL

Günlük dosyasının adını bulmak için aşağıdaki sorguyu kullanabilirsiniz

SELECT name 
FROM sys.master_files
WHERE database_id = DB_ID('<databse_name>')

Dosyayı küçült

DBCC SHRINKFILE (N'<logical_file_name_of_the_log>' , 0, TRUNCATEONLY)

Bkz. SQL Server günlük dosyasını kısaltma komutu nedir? bunun hakkında daha fazla bilgi için

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.