2016-04-26 90 views
1

私は仕事で50以上のテーブルを実行しています。以前は、うまくいきました。sasで十分でないディスク領域を処理するソリューション

ERROR: An I/O error has occurred on file WORK.'SASTMP-000000030'n.UTILITY. ERROR: File WORK.'SASTMP-000000030'n.UTILITY is damaged. I/O processing did not complete. NOTE: Error was encountered during utility-file processing. You may be able to execute the SQL statement successfully if you allocate more space to the WORK library. ERROR: There is not enough WORK disk space to store the results of an internal sorting phase. ERROR: An error has occurred.

誰もがこのエラーを解決する方法を知っています: しかし最近、のようないくつかのエラーがありますか?

+0

この行を生成するSQL文は何ですか?データセットはどの程度の大きさですか? – Joe

答えて

3

ディスクがいっぱいです。これがサーバー上で実行されている場合は、システム管理者に問題の調査を依頼してください。

デスクトップの場合は、不要なファイルを探して削除して空き容量を確保してください。

クリーンアウト古いSAS作業フォルダ

SASが閉じたときに、しばしば、古いSAS作業フォルダはクリアされません。 SAS Workで定義されたパスに移動し、古いフォルダをすべて削除することで、多くのディスク容量を取り戻すことができます。現在のWORKライブラリがどこにあるSAS

%put %sysfunc(pathname(work)); 

はあなたが表示されます。 1つ上のレベルでは、すべてのSAS Workフォルダが作成されます。

C:\Users\dpazzula\AppData\Local\Temp\SAS Temporary Files\_TD9512_GXM2L12-PAZZULA_ 

を私は見なければならないことを意味し、 "C:SAS一時ファイル\ \ \ Users \ユーザーdpazzula \のAppData \ローカル\ Tempに" を削除し、古いフォルダを見つけるに戻り、私のシステムで

、 。

+0

これは良い提案ですが、これが問題であるかどうか、またはSQL文がちょうど大きくなりすぎているかどうかを知るには十分に明確ではありません... – Joe

+0

これは以前のコードがOKだったという記述に基づいています。 「前に、うまくいった。」しかし、はい、それはHDを埋める悪いSQLステートメントかもしれません。 – DomPazz

+0

良い点。ありがとう。 SQLを使用して結合を実行すると、SASクラッシュが発生しました。したがって、結合された項目が各表で一意でない場合に起こりうることを意味します。これは過大な結果を招くでしょうか? – jen

0

あなたの作業スペースがいっぱいです。並べ替えながら、参加など

ソリューションを使用して作業ライブラリ内のすべてのファイルと同様に、一時ファイル:


  1. お使いのSASサーバーは、専用のすべてのSASセッションがその一時ファイルを格納ディレクトリを使用していますより多くの領域を割り当ててください。
  2. 必要なファイルだけを作業/クリーンアップ/古いセッションのクローズに入れてください。
  3. 少ないプロセスを実行します。
0

あなたが大規模なソースのデータセットを使用している場合は特に、代わりにビューで暫定データセットを交換してください:あなたは誰があなたの仕事のライブラリを食べているものを/の優れた可視性を必要とするよう

 
data master /view=master ; 
    set lib.monthlydata20: ; /* all datasets since Jan 2000 */ 
run ; 

proc sql ; 
    create table want as 
    select * 
    from master 
    where ID in(select ID from lookup) ; 
quit ; 
+0

私はいくつかのスペースを節約するためにテーブルを削除したいと思いますが、私はProcのデータセットライブラリ=仕事の削除tablenameを使うことができると思いますか? – jen

+0

私はビューを作成しようとしました。 SQLビューのwork.tablenameは、直接または間接的に参照されるデータセットまたはビューの少なくとも1つが見つからないか、正常に開かれたために処理できませんでした。どういう意味ですか? – jen

0
try to compress all datasets using this option 
OPTIONS COMPRESS=YES REUSE=YES; 
this should be in the very beginning of your code. it will compress all datasets by nearly 98%.It will also make your code run faster. It will consume more CPU but will decrease size. 
In some cases, this might not help if the compressed data sets exceed the hard disk space. 
Also, change your work directory to the biggest drive that has disk space. 
0

はあなたのコードを検討:githubの上でGPLの下で利用可能そのための無料のツールは、(UNIXのみ)があります。

データフローダイアグラムを作成して、各ファイルが作成されるWHEN、下流で使用されるWHENを判断します。データセットが不要になったときにそれを削除して削除します。 50のデータセットがある場合、後続のステップで多数のデータセットが「付加価値」を持つ可能性があり、作業スペースを解放することができます。かわいいやり方は、不要なデータセットの数をチェックしておくために、データセット名のいくつかを再利用することです。

経験則:あなたが見つけた環境にしておきます.WORKにファイルが存在しない場合は、手動で手動でクリーンアップしてください。それが完全に新しいSASジョブを開始し、ジョブの完了時にそれ自身の後でクリーンアップするストアドプロセスでない限り。

関連する問題