1. ホーム
  2. データベース
  3. mssql2008

SQL SERVER 2008のデータベースログファイルの縮小方法

2022-01-08 07:16:50

最近、業務量の増加に伴い、会社のデータベースが巨大化(300G以上)し、ディスク容量が不足し、その結果、データベースのリクエストにアクセスできなくなることがあります。

Web上には似たような方法がたくさんあるが、うまくいかない。ここでは、ログファイルを任意の指定サイズに縮小する方法を紹介します。

ステップ1. SQL SERVER Management Studioでデータベースを右クリックし、[プロパティ] --- [オプション]を選択し、リカバリモードをデフォルトの[フル]から[シンプル]に変更します。

ステップ2. データベースを再度右クリックし、[タスク]-[縮小]-[ファイル]メニューを選択して、縮小ファイルのページに入り、ファイルの種類(縮小されるもの)を"として選択し、ページの下の"縮小操作"のラジオボックスを選択して、[未使用領域を解放する前にページを再構成してファイルを縮小する:"を選んで、適切な縮小ログファイルのサイズを記入します。

最後に、このページの下にある「OK」ボタンをクリックすると、シュリンクファイル(ログ)操作が実行されます。

そうすると、ログファイルが指定したサイズに縮小されたことが確認できます。

ファイルを0に縮小して終了です。即座にOK、コマンドを使うよりずっと早いし、36gのログならこれも早い。

ステップ3 ステップ3: SQL SERVER Management Studioでデータベースを右クリックし、[プロパティ] --- [オプション]を選択し、リカバリモードをデフォルトの[シンプル]から[フル]に変更します。

ここでは、最もよく使われる方法の1つを紹介します。

USE [master]
GO
ALTER DATABASE library name SET RECOVERY SIMPLE WITH NO_WAIT
GO
ALTER DATABASE library name SET RECOVERY SIMPLE --simple mode
GO
USE library name
GO
DBCC SHRINKFILE (N'library_log' , 11, TRUNCATEONLY)
GO

--> here DNName_Log If you don't know the name in sys.database_files, you can use the following commented statement to query it
--USE library name
--GO
--SELECT file_id,name FROM sys.database_files;
--GO

USE [master]
GO
ALTER DATABASE SCDMS SET RECOVERY FULL WITH NO_WAIT
GO
ALTER DATABASE SCDMS SET RECOVERY FULL --restore to full mode
GO

一般的に言って、上記のSQLは、2Gの速度でログを記録するために大丈夫ですが、そうでない場合は、次の手順を参照してください。

1: 次に、ウェブでコマンドを調べ、リリース状況であるログファイルのタイプREPLICATIONを見つけます。

2: そして、executeコマンドを見つける , ステータス2、つまりコミットされていないログがたくさん表示されます。

DBCC LOGINFO('データベース名')

3: 先ほど作成したリリースを直接選択すると、以下のエラーが表示されます。

sqlserver は、ボディ "dbo" が存在しないため、データベース本体として実行できません...。
次のコマンドを検索して、ユーザーのデータベースロールを追加するときに、このアカウントはすでに存在していることを求めるプロンプトが表示されます。

<ブロッククオート

USE ライブラリ名
EXEC sp_changedbowner 'sa'

4: その後、パブリッシュを削除し、成功したものを再度サブスクライブします。最後に、最初のステップのSQLコマンドを再度実行すると、ログファイルが正常に削減されます。

方法2:まずリカバリーモードを"シンプルリカバリー"に設定し、シュリンクします。

USE BigData ;
GO
ALTER DATABASE BigData
SET RECOVERY SIMPLE;--set simple recovery mode
GO
DBCC SHRINKFILE (BigData_Log, 1);
GO
ALTER DATABASE BigData
SET RECOVERY FULL;--Restore to original mode
GO 

方法3

USE BigData;
GO
BACKUP LOG DATABASENAME TO DISK='d:\test.bak'
-- Shrink the truncated log file to 1 MB.
DBCC SHRINKFILE (Bigdata_Log, 1);
GO

以上、本記事の全内容をご紹介しましたが、皆様の学習のお役に立てれば幸いです。また、Script Houseをより一層応援していただければ幸いです。