2011-07-23 10 views
1

私はSSMSを使用して比較的大きなテーブルをダンプしています。通常の方法は、Query->Results-To->Fileを 'Execute`に設定してファイルを選択し、SQLクエリを実行させることです。終了後、通常はファイルを圧縮してローカルマシンに転送します。これは、夜間のSQLクエリ中に空き領域が不足しているホストマシンの明白な問題があります。SQLクエリの結果を直接圧縮/圧縮する方法はありますか?

クエリ全体から結果をダンプするまで待つことなく、SSMSからの出力を直接圧縮する方法があるのだろうかと思っていました。助言がありますか?ホストマシンはかなり制限されているため、サードパーティ製のソフトウェアを必要最小限に抑えるという提案は素晴らしいものになるでしょう。

答えて

7

代わりにsqlcmdからクエリを実行し、出力をコマンドラインzipにパイプします(インストールする必要があります。What's a good tar utility for Windowsを参照してください)。または、パイプ入力を含むすぐに使用できるPowerShellを使用することもできます。Compress Files with Windows PowerShell then package a Windows Vista Sidebar Gadgetを参照してください。これは、PSがすでにホストサーバーにあるため、追加のツールは必要ありません。リンクは、最初に圧縮されたファイルを必要とし、ファイルを圧縮することはできません)。 sqlcmdのと7zipを使用して

サンプルクエリ:

sqlcmd -S <DATABASE> -s <COLUMNSEP> -Q "SELECT ..." | .\7za.exe a -si <FILENAME> 

が、これは動作しません-q(実行クエリ)または他の-Q(実行クエリして終了)を使用することを忘れないでくださいとありません。

+0

+1 - ちょうど私が提案しようとしていたもの(sqlcmd +コマンドラインzip)。 – Oded

+1

+ありがとうございます。私はあなたの答えに少しの情報を加えました。あなたが気にしないことを願っています。 – Legend

関連する問題