2012-04-13 7 views
2

私は、データベースまたはログが残りの10%の領域に達したときにアラートを送信する方法を探しています。SQL Serverの "使用可能なスペース"警告?

私は意図的に質問に「ファイル」という単語を含めなかったと言って、この質問を序文としましょう。私はこの質問を研究しているが、ほとんどの人は自らのデータベースを自動成長のために設定し、ファイルシステムレベルでデータベースを管理するのに苦労しているようだ。ディスクスペースアラートを送信する方法には、そこには数多くの例があります。これは私の質問ではありません!私のデータベースはすべて固定サイズのファイルに設定されています。つまり、ファイルが作成されるとき、またはデータベースを展開する必要があるときに、ファイルシステムからファイルがすべて事前に割り当てられます。ポリシーの問題として、私はすべてのデータベースを制御不能に成長させて、1つの悪い動作をするアプリケーションの手でサーバ全体を停止させることはできません。各データベースは、事前に割り当てられた領域内で管理され、増大する要求を満たすために必要に応じて手動で作成されます。

データベース「リーマンスペース」が10%以下になったときに警告を送信する最良の方法を探していると言われました。技術的には警告と警告のしきい値を設定することになります。これまでのところ、ほとんどの人がディスクスペースに固定されているように見えるので、このテーマでは何も見つけることができませんでした。これは、乾草の針を探しているような感じです。

SQL Serverには、単純で明白なことを行う簡単なアラートメカニズムが備わっていることが期待されていますが、アラートはほとんどがエラーメッセージをキャッチするように設計されています本 - 私はもう少し積極的になるようにしています。

データベース「残りの領域」がさまざまなしきい値を下回ったときにアラートを送信するように探します。誰かがこれをやったのか、それともそれを見ましたか?

ありがとうございます!

答えて

3

ありがとうございます。私はこれをしました。

システムテーブルに対するクエリでカウンタを設定することは可能です。 1つの可能性は、ログまたはデータファイルの空き領域の割合を決定することです。次に、SQLアラートを作成して、カウンタで特定のしきい値に達したことをオペレータに電子メールで知らせることができます(データベースファイルに5%のスペースしか残っていないなど)。ソリューションにはいくつかのステップが必要ですが、既存の機能を使用することは可能です。

ファイル名とスペース情報を調べるには、次のクエリを使用します。

SELECT name AS 'File Name' , 
physical_name AS 'Physical Name', 
size/128 AS 'Total Size in MB', 
size/128.0 - CAST(FILEPROPERTY(name, 'SpaceUsed') AS int)/128.0 AS 'Available Space In MB', 
round((CAST(FILEPROPERTY(name, 'SpaceUsed') AS float)/size)* 100 ,2) AS 'Percentage Used', 
* 
FROM sys.database_files; 

は、下記のファイルの空き率スペースのアラートを設定するための手順です。

  1. 値とカウンタ設定手順を作成します。この例では、カウンタ番号10

    DECLARE @FreePercent int 
    
    SELECT @FreePercent = 100 - round((CAST(FILEPROPERTY(name, 'SpaceUsed') AS float)/size)* 100 ,2) 
    FROM sys.database_files 
    WHERE sys.database_files.name = 'NameOfYourLogOrDataFileHere'; 
    
    EXEC sp_user_counter10 @FreePercent 
    
  2. 前述の手順を実行するようにスケジュールされたジョブを作成し

  3. が自由割合が一定のしきい値(下回ったときに、それが実行されるように、カウンターとSQLエージェントのアラートを作成設定しますすなわち、5%)

  4. 設定データベースメールは、それをテストし、(剤の特性)は、少なくとも一つのオペレータ

  5. 有効にSQL ServerエージェントのアラートEメールを作成し、エージェント

に再起動します