#author("2022-02-28T05:46:19+00:00","default:admin","admin")
#author("2022-02-28T05:49:48+00:00","default:admin","admin")
-[[DBCC SHRINKFILE (Transact-SQL):https://docs.microsoft.com/ja-jp/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-ver15]]

-[[DBCC SHRINKFILE によるファイル圧縮の動作 (データファイル編):https://blog.engineer-memo.com/2021/04/07/dbcc-shrinkfile-%E3%81%AB%E3%82%88%E3%82%8B%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E5%9C%A7%E7%B8%AE%E3%81%AE%E5%8B%95%E4%BD%9C-%E3%83%87%E3%83%BC%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E7%B7%A8/]]
-[[[SQLServer]DBサイズの圧縮:https://ameblo.jp/nature3298type-s/entry-10301244110.html]]

*データベースの圧縮 [#t1042a4b]
-指定したデータベース内のデータファイルとログファイルのサイズを圧縮
 DBCC SHRINKDATABASE('testdb', 10)

*トランザクションログファイルの圧縮 [#nedb1fab]
-[[トランザクションログファイルのサイズ縮小について:http://masaru1006a.hatenablog.com/entry/2018/03/21/154319]]

-復旧モデルが完全の場合は、ファイルサイズが圧縮されない場合が有る(?)ので、以下のコマンドでトランザクションログファイルを切捨ててから「DBCC SHRINKFILE」を行うと良いかも
-「DBCC SHRINKFILE」と「BACKUP LOG」を交互に繰返し実行しないと、ファイルサイズが初期サイズまで戻らないことが有る気がする

-トランザクションログ切り捨て用コマンド
 BACKUP LOG [データベース名] TO DISK = N'NUL'

*実行例 [#c1303404]
-データベースのバックアップを取った後、トランザクションログ切り捨てを3回実行する
 USE testdb
 GO
 
 BACKUP DATABASE testdb TO DISK=N'E:\MSSQL\backup\testdb.bak' WITH INIT, COMPRESSION
 
 BACKUP LOG testdb TO DISK=N'NUL'
 DBCC SHRINKFILE('testdb_log', 1)
 BACKUP LOG testdb TO DISK=N'NUL'
 DBCC SHRINKFILE('testdb_log', 1)
 BACKUP LOG testdb TO DISK=N'NUL'
 DBCC SHRINKFILE('testdb_log', 1)
--最初の「USE testdb」がないと、後半の「BACKUP LOG」の実行時に「ファイルが見つからない」というエラーが発生してしまうので注意
--最初の「USE testdb」がないと、後半の「DBCC SHRINKFILE」の実行時に「ファイルが見つからない」というエラーが発生してしまうので注意

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS