回答編集履歴

2

追記

2019/07/24 06:16

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -31,3 +31,23 @@
31
31
  > 使用できる空き領域が不十分な場合、圧縮操作ではこれ以上ファイル サイズを減らすことはできません。
32
32
 
33
33
  > 通常、圧縮されていないように見えるのはログ ファイルです。 この圧縮されない状況は、多くの場合、ログ ファイルが切り捨てられなかった結果として起こります。 ログを切り捨てるには、データベース復旧モデルを SIMPLE に設定するか、**ログをバックアップして再度 DBCC SHRINKFILE 操作を実行します。**
34
+
35
+
36
+
37
+ 上記に関連して、以下も試してみて下さい。
38
+
39
+ [トランザクションログが、切り捨てと圧縮をしても小さくならない。](https://social.msdn.microsoft.com/Forums/aspnet/ja-JP/9cb5e992-55e6-4c77-9aed-c3a1064a8f5a/12488125211253112470124631247112519125311252512464123641228920?forum=sqlserverja)
40
+
41
+ > トランザクションログファイルは、全体で一つの大きな輪になっていると考えてください。
42
+
43
+ > ログを記録している際に、ファイルの終わりまで行くと、先頭に戻って記録を続けます。 (空きが無くなると、ファイルを拡張します。)
44
+
45
+ >
46
+
47
+ > 一方で、空き領域の切捨ては、ファイルの末尾からしか行われません。
48
+
49
+ >
50
+
51
+ > そのため、最新のログがファイルの末尾にあると、切捨てが出来ません。
52
+
53
+ > その場合は、ダミーの SELECT 文で 最新のログをファイルの先頭に記録させ、末尾のログをバックアップすることで、切捨てが出来るようになります。

1

追記

2019/07/24 06:16

投稿

sazi
sazi

スコア25195

test CHANGED
@@ -1 +1,33 @@
1
1
  データ削除後に完全バックアップを行っていないなら、完全バックアップを行ってからDBCC SHRINKFILEを行ってみて下さい。
2
+
3
+
4
+
5
+ 追記
6
+
7
+ --
8
+
9
+ [DBCC SHRINKFILE (Transact-SQL)](https://docs.microsoft.com/ja-jp/sql/t-sql/database-console-commands/dbcc-shrinkfile-transact-sql?view=sql-server-2017)
10
+
11
+ > **トラブルシューティング**
12
+
13
+ > ここでは、DBCC SHRINKFILE コマンドを実行する場合に発生する可能性のある問題を診断し修正する方法について説明します。
14
+
15
+ > ファイルが圧縮されない
16
+
17
+ > エラーなしで圧縮操作が完了してもファイル サイズが変わらない場合は、以下の操作でファイルに十分な空き領域があることを確認してください。
18
+
19
+ > 次のクエリを実行します。
20
+
21
+ ``` SQL
22
+
23
+ SELECT name ,size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS AvailableSpaceInMB
24
+
25
+ FROM sys.database_files;
26
+
27
+ ```
28
+
29
+ > DBCC SQLPERF コマンドを実行し、トランザクション ログで使用されている領域を返します。
30
+
31
+ > 使用できる空き領域が不十分な場合、圧縮操作ではこれ以上ファイル サイズを減らすことはできません。
32
+
33
+ > 通常、圧縮されていないように見えるのはログ ファイルです。 この圧縮されない状況は、多くの場合、ログ ファイルが切り捨てられなかった結果として起こります。 ログを切り捨てるには、データベース復旧モデルを SIMPLE に設定するか、**ログをバックアップして再度 DBCC SHRINKFILE 操作を実行します。**