2017年06月15日
Microsoft SQL Server トランザクションログ 肥大化 切り捨て 圧縮 解消方法
データベースの接続に失敗しました
SQL Server 利用時に「データベースの接続に失敗しました。」のメッセージが表示されることがある。
SQL Server が稼動しているマシンを再起動したり、
SQL Server サービスの再起動で回避することもあるが、
このメッセージにはもっと重大な危険性が潜んでいる。
実はトランザクションログファイルの拡張に時間がかかり、
タイムアウトが発生しているのだ。
このまま放置しておくと大変な事になりかねない。
データベースの自動拡張時にタイムアウトが発生する
トランザクションログの強制切り捨て
SQL Server 2008 以降では、
BACKUP LOG WITH TRUNCATE_ONLYによる、
トランザクションログの強制切り捨ては使用できなくなっている。
そのため、
データベースの復旧モデルが「完全」「一括ログ」を使用している場合、
定期的にトランザクションログのバックアップを取得し、
トランザクションログを切り捨てる必要がある。
ただし、
データベースを配置しているディスク領域が枯渇していると、
バックアップもできなくなる。
このような場合は、
復旧モデルを「単純」に変更することで、
トランザクションログを切り捨てることができる。
もし、復旧モデルを変更したくないという場合は、
バックアップをNULLデバイスに取得すれば、
トランザクションログを切り捨てることができる。
BACKUP LOG [データベース名] TO DISK = N'NUL'
ログの切り捨てができたので、
後はトランザクションログの圧縮を行う。
USE [データベース名];
DBCC SHRINKFILE (論理ファイル名, TRUNCATEONLY);
トランザクションログを肥大化させる方法
上記で説明したように、
「データベースの自動拡張時にタイムアウトが発生する」ことで、
データベースへの接続ができなくなる事がある。
例えば、システム納入先で不具合が生じている場合など、
手元のマシンで再現させ、どのように対処すべきかを検討するべきであろう。
そこで必要となるのは、
トランザクションログを肥大化させる方法。
トランザクションログを肥大化させるには ALTER DATABASE を実行するのが手っ取り早い。
ALTER DATABASE [データベース名]
MODIFY FILE
(
NAME = 論理ファイル名,
FILENAME = '○○○.ldf',
SIZE = ○○○MB,
MAXSIZE = UNLIMITED,
FILEGROWTH = 増分サイズまたは比率 (0 以外を指定する)
)
Microsoft Japan SQL Server Support Team のブログもご参考に!!
HowTo: Management Studio を使ってトランザクションログファイル (ldf) のサイズを小さくする方法
【このカテゴリーの最新記事】
-
no image
-
no image
-
no image
この記事へのコメント
コメントを書く
この記事へのトラックバックURL
https://fanblogs.jp/tb/6373831
この記事へのトラックバック