SQL Server 2012は初めてですが、誰かが手伝ってくれるとありがたいです。巨大なデータベースのコピーをSQL Server 2012に復元し、それに対していくつかの簡単なクエリを実行しようとしました。
136898115
行のデータベーステーブルに対してSELECTクエリを実行しようとしています。このSELECT
クエリには、単純なWHERE
句しかありません。このクエリを実行するたびに、システムディスク(Windowsがインストールされているパーティション-C:\
)の領域が不足しているため(このパーティションには6 GBの空き領域しかない)、失敗します。理由がわかりません。 tempdbを、14テラバイトを超える空き領域がある別のドライブに定義しました。もちろん、私のデータベースも別のドライブにあります。
システムパーティションの容量が不足する原因は何ですか?それはページファイルですか?
SSMSクエリの結果は、デフォルトでC:ドライブにキャッシュされます。ツール\オプションに移動します。添付資料参照。これをより多くのストレージを持つ別のボリュームに変更すれば、大丈夫です。
さて、私はそれを理解しました: Eric そして私はどちらも正しかった!
C:\Users\<UserName>\AppData\Local\Temp
私の場合はここ)。私がチェックしたところ、このキャッシュをオフにする明白な方法がないようです。したがって、要点は次のとおりです。
SELECT *
結果セットがプロファイルフォルダに収まらない限り、SSMSの巨大なテーブルから私はちょうど同じ問題を経験しました。上記の答えを読んだ後、私は以下を見つけました。
ツール|オプションは答えではありません。私のクエリはY:ドライブに設定されていましたが、クエリが実行され、C:ドライブの領域が2.9GBから5.04MBに急降下するのを見ました(クエリを終了する前)。
ジョンが言ったとおり、結果はおそらくすべての行が返されて非常に大きく、返されるすべての行に大きなXMLチャンクが含まれているため、Tempディレクトリに結果をキャッシュしていると思いましたが、どのように変更するかはわかりませんでした。
一時ファイルが書き込まれる場所を変更するために行ったのは、環境変数を開き、ユーザー変数TEMPおよびTMP(どちらもC:\ Tempに設定されている)を編集してZ:\ Tempに書き込むことでした。
この変更後、クエリがZ:\ Tempディレクトリに非常に大きなファイルを作成するのを確認できました。