【SQL Server】SQLDUMPERのdmpファイルがドライブを圧迫した時の対応


いつもお世話になっております。
RfromLです。

使用しているパソコンのCドライブの容量が逼迫していたので調査したところ、SQLDmpr.0000000XXXXXXXXX.GMT-YYYY-MM-DD-HH-00-00.dmpなるファイルが大量に作成されており全部で1.2TBも使っていました。

今回は上記の事象への対処方法です。

1.はじめに

私が自宅で使用しているパソコンにはSQLserver2019をインストールしていますが、SQLserver2019を入れてから暫くしてパソコンのCドライブ容量が逼迫していました。

上の画像は容量が逼迫していた時のスクリーンショットです。
Cドライブは基本システム用のドライブなので、保存ファイルや作業用ファイルなどは全部Dドライブに入れるようにしています。
1.8TBもあれば普通は容量が足りなくなることは無いはずですが残り5GBちょっとしかありません。

調査した結果の結論として今回行った対応を記載すると以下の2点です。

①SQLDUMPERのdmpファイルを削除
②Polybaseの停止

今回は上記2点の対応手順を記載します。


2.dmpファイルの削除

ドライブが逼迫している要因を調査した結果、以下のフォルダに作成されている大量のダンプファイルが原因だったことがわかりました。

C:\Program Files\Microsoft SQL Server\MSSQL15.XXXXXXXXXXXXXXX\MSSQL\Log\Polybase\dump

「XXXXXXXXXXXXXXX」はSQLserverインストール時に入力したインスタンス名になっています。
~MSSQL15.~の「15」部分はインストールしたSQLserverのバージョンによって変わります。
下表の{nn}列が各バージョンに対応した数字です。

バージョン{nn}
SQL Server 2022 (16.x)16
SQL Server 2019 (15.x)15
SQL Server 2017 (14.x)14
SQL Server 2016 (13.x)13
SQL Server 2014 (12.x)12
SQL Server 2012 (11.x)11
「Microsoft SQL ドキュメント」の「SQL Server の既定のインスタンスおよび名前付きインスタンスのファイルの場所」より抜粋

実際に対象のフォルダを開くと以下画像のように大量(2285個)のdmpファイルが作成されています。

ファイル名に年月日時(例:~2025-04-03-03~)が使用されていることと更新日時から削除しても問題なさそうだったので全部削除しました。


dmpファイル削除後、Cドライブの容量を確認したところ、容量が逼迫されている状態は解消されました。

これでCドライブ容量の逼迫は解消されますが、dmpファイルは作成され続けるのでしばらくするとまた同事象が発生します。

根本解決として事項の対応を実施する必要があります。


3.Polybaseの停止

dmpファイルが格納されていたフォルダ名「・・・\Polybase\dump」とあるように、Polybaseがdmpファイルを作成しているようなので、サービスをみると状態が「開始中」になっていました。

また、PolyBaseに関連する以下2つのサービスについて、スタートアップの種類が「自動」になっていたのでこれを変更することで、勝手に実行されないようにします。

・SQL server PolyBase Data Movement( インスタンス名 )
・SQL server PolyBase エンジン( インスタンス名 )

手順①「サービス」アプリケーションの起動

スタートメニューを開いて、「すべて」をクリックしてアプリの一覧を表示します。

アプリの一覧からWindowsツールを探してクリックします。

Windowsツールが開いたら「サービス」をダブルクリックします。

「サービス」アプリケーションが起動します。

手順②「SQL server PolyBase Data Movement」の停止

「サービス」アプリケーションを起動したら、下にスクロールして「SQL server PolyBase Data Movement」を探して、「SQL server PolyBase Data Movement」がみつかったら、ダブルクリックしてプロパティを表示します。

プロパティ画面で「スタートアップの種類」を「無効」に変更します。

「スタートアップの種類」を変更したら「適用」ボタンで変更を適用。「OK」ボタンでプロパティを閉じます。

画面がサービス一覧に戻って「スタートアップの種類」が「無効」になっていることを確認します。

「SQL server PolyBase エンジン」も同様の操作を行い「スタートアップの種類」を「無効」に変更します。

この状態だと、SQL server PolyBase Data Movementの状態は「開始中」のままなのでパソコンを再起動します。

パソコンを再起動してもう一度サービスの状態を確認します。

再起動前は「開始中」になっていた状態が、空欄(非稼働)になっていることが確認できました。
これで「PolyBase」の停止は完了です。


4.おわりに

PolyBaseを停止してから1日後にもう一度、dmpファイルが格納されていた場所を確認したところ、Cドライブ容量を逼迫していたファイルは作成されていませんでした。

これで事象は解消されたので対応自体は完了なのですが、そもそも「PolyBase」とはなんなのかについて記載しておきます。

「PolyBase」はデータ仮想化を行う機能でSQLserver 2016から実装された機能のようです。
データ仮想化というのは、異なる種類のデータベースサーバ(SQL Server、Oracle、Teradata、MongoDB、Hadoop)があったとして、この上に仮想のデータベースを構築。
仮想のデータベースを操作することで、SQL Server インスタンスから別種のデータベースサーバを操作する技術です。


参考資料「SQL Server の PolyBase によるデータ仮想化」

PolyBase によるデータ仮想化の概要 – SQL Server | Microsoft Learn

私が自宅パソコンにSQLserverをインストールしていたのは、SQL文の試作と実行が目的なので不要な機能だったのですが、インストールの際に「PolyBase」機能は除外することが出来たようです。

SQLserver2019をインストールした時の記事「【SQL Server】SQL Server 2019・Microsoft SQL Server Management Studio(SSMS)インストール手順」を改めて確認したら、「(8)「機能の選択」画面」で「すべて」を選択しているので「PolyBase」もインストールされていました。

一個一個確認するのが面倒だから、とりあえず全部入れとけ!って感じでしたね。
アンチパターンなので私を反面教師にしてください。。。

以上です。
宜しくお願い致します。


タイトルとURLをコピーしました