SQL Server 2008 ログが切り捨てられない 質問する

SQL Server 2008 ログが切り捨てられない 質問する

私は、SQL の経験が豊富な人間だと思っています。しかし、次の 2 つの点が欠けています。

  • 割り当てられたログのサイズを減らします。
  • ログを切り捨てます。

    DBCC sqlperf(ログスペース)

戻り値:

Database Name   Log Size (MB)   Log Space Used (%)  Status
ByBox       1964.25     30.0657         0

以下はSQL 2008では動作しません

DUMP TRANSACTION ByBox WITH TRUNCATE_ONLY

以下を実行しても何も起こりません

DBCC SHRINKFILE ('ByBox_1_Log' , 1)
DBCC shrinkdatabase(N'bybox')

バックアップを試しました。また、データベースのプロパティ(「モデルの回復」)を「FULL」と「SIMPLE」の両方に設定したり、上記すべてを組み合わせたりしてみました。また、互換性を SQL Server 2005(運用サーバーと一致させたいのでこの設定を使用しています)と SQL Server 2008 に設定してみました。

何を試しても、ログは 1964.25 MB のままで、30% が使用されており、まだ増加し続けています。

ログを 0% 近くまで下げて、ログ ファイルのサイズを、たとえば十分な 100 MB に減らしたいのですが、データベースが私を嫌っているようです。ログに関して私が要求したことはすべて無視されてしまいます。

さらにもう 1 つ注意点があります。本番データベースには複製されたテーブルが多数ありますが、開発ボックスで復元を実行するときは、次のコマンドを使用してこれらのテーブルをオフにします。

-- Clear out pending replication stuff
exec sp_removedbreplication
go
EXEC sp_repldone @xactid = NULL, @xact_segno = NULL,
     @numtrans = 0, @time = 0, @reset = 1
go

試しています:

SELECT log_reuse_wait, log_reuse_wait_desc
FROM sys.databases
WHERE NAME='bybox'

戻り値

log_reuse_wait  log_reuse_wait_desc
0   NOTHING

この問題を解決するにはどうすればいいでしょうか?


見つめているこれ復旧モデルを FULL に設定して、次のことを試しました。

USE master
GO

EXEC sp_addumpdevice 'disk', 'ByBoxData', N'C:\<path here>\bybox.bak'

-- Create a logical backup device, ByBoxLog.
EXEC sp_addumpdevice 'disk', 'ByBoxLog', N'C:\<path here>\bybox_log.bak'

-- Back up the full bybox database.
BACKUP DATABASE bybox TO ByBoxData

-- Back up the bybox log.
BACKUP LOG bybox TO ByBoxLog

返される結果:

Processed 151800 pages for database 'bybox', file 'ByBox_Data' on file 3.
Processed 12256 pages for database 'bybox', file 'ByBox_Secondary' on file 3.
Processed 1 pages for database 'bybox', file 'ByBox_1_Log' on file 3.
BACKUP DATABASE successfully processed 164057 pages in 35.456 seconds (36.148 MB/sec).

Processed 2 pages for database 'bybox', file 'ByBox_1_Log' on file 4.
BACKUP LOG successfully processed 2 pages in 0.056 seconds (0.252 MB/sec).

完璧!でもそうじゃない。

そしてDBCC SHRINKFILE ('ByBox_1_Log' , 1)は次のように返します。

DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
7   2   251425  251425  251424  251424

DBCC SQLPERF(LOGSPACE) では依然として 30% の使用率が報告されます。

SQL Server 2008 にバグがあるか、ログ ファイルが何らかの形で破損している可能性もあるので、諦めるしかないと思います。ただし、データベースは正常に動作しているので、バグがあると考えられます。(その考えに身震いする)

ベストアンサー1

私の場合、SQL Server 2008 に 650 MB のデータベースと 370 GB のログ ファイルがありました。何を試しても、縮小できませんでした。ここに回答として記載されているすべての方法を試しましたが、それでも何も機能しませんでした。

最後に、どこか別の場所で実際に機能する非常に短いコメントを見つけました。これは次のように実行します。

BACKUP LOG DatabaseName TO DISK = N'D:\Backup\DatabaseName_log.bak'
GO
DBCC SHRINKFILE('MyDatabase_Log', 1)
GO

これにより、ログ ファイルは 37 GB から 1 MB に縮小されました。 よかった!

おすすめ記事