sql >> データベース >  >> RDS >> Sqlserver

SQL 小規模データベースでのメンテナンス ジョブ

    あいまいすぎて正確に答えることができません。DB で実行されるアクティビティの種類、使用される復旧モデルに大きく依存します。テーブルの削除と挿入が頻繁に行われる場合に、トランザクション ログを使用せずに db ファイルのみを使用するシンプル リカバリ モードでは、通常、定期的にインデックスを再構築する必要があります。

    sqlcmd を呼び出して次の SQL を実行する毎日 (夜間実行) タスクを設定するために使用します:

    --*********************************
    --*** REPLACE THIS WITH DBNAME  ***
    USE db_mytestcopy_of_live_production
    --*********************************
    
    GO
    
    
    DECLARE @Queryresult NVARCHAR(MAX)
    
    SET @Queryresult=''
    
    --*********************************
    --DEFRAGGING THE MOST 6 FRAGMENTED INDEXES EXCLUDING ONES WITH A FRAG UP TO 35 %
    --TO TAILOR IT TO YOUR NEEDS CHANGE THE NUMBERS AFTER "SELECT TOP" AND AFTER "ss.avg_fragmentation_in_percent >"
    
    --WITHIN THE SQL HERE BELOW
    --*********************************
    
    SELECT TOP 6
      @[email protected] + 'ALTER INDEX ' + QUOTENAME(i.name) + ' ON '
      + QUOTENAME('dbo') + '.'
      + QUOTENAME(OBJECT_NAME(i.OBJECT_ID)) + ' REBUILD;'
     FROM sys.dm_db_index_physical_stats(DB_ID(), NULL, NULL, NULL, 'SAMPLED') ss
      INNER JOIN sys.indexes i ON i.OBJECT_ID = ss.OBJECT_ID AND i.index_id = ss.index_id
      INNER JOIN sys.objects o ON ss.object_id = o.object_id
    WHERE ss.avg_fragmentation_in_percent > 35
    AND ss.record_count > 0 
    AND o.is_ms_shipped = 0 --Excludes any objects created as a part of SQL Server installation
    AND ss.index_id > 0     --Excludes heap indexes
    ORDER BY ss.avg_fragmentation_in_percent DESC
    
    --*********************************
    --Uncomment to see the generated command
    
    --*********************************
    --PRINT @QueryResult
    
    EXEC sp_executesql @QueryResult
    



    1. スーパー特権なしで単純なMySQL関数を作成することはできません

    2. ODBC バインド パラメータを使用して VARCHAR の長さを事前に決定する C++

    3. クエリプランのビットマップヒープスキャンとは何ですか?

    4. OracleServerで文字列の最初の文字を削除します