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

T-SQLを使用してSQLServerデータベースのリカバリモデルを変更する方法

    SQLServerには3つのリカバリモデルがあります。シンプル、フル、バルクログ。各データベースは、これらの設定の1つを使用します。

    バックアップと復元の操作は、データベースのリカバリモデルのコンテキスト内で行われます

    ALTER DATABASEを使用して、データベースのリカバリモデルを変更できます。 SET RECOVERYとともにステートメント オプション。

    ALTER DATABASEを使用するときに使用できるオプション リカバリモデルを設定するには、次のようにします。

    • SIMPLE
    • FULL
    • BULK_LOGGED

    ALTERが必要になります このような変更を行うためのデータベースの権限。

    PetHotelというデータベースがあるとします。 。

    sys.databasesにクエリを実行することで、現在のリカバリモデルを確認できます。 カタログビュー:

    SELECT 
        name, 
        recovery_model_desc  
    FROM sys.databases
    WHERE name = 'PetHotel';

    結果:

    +----------+-----------------------+
    | name     | recovery_model_desc   |
    |----------+-----------------------|
    | PetHotel | SIMPLE                |
    +----------+-----------------------+

    PetHotel データベースは現在、単純なリカバリモデルを使用しています。

    完全復旧モデルに変更しましょう:

    USE master;  
    ALTER DATABASE PetHotel 
    SET RECOVERY FULL;

    完了しました。

    結果を確認しましょう:

    SELECT 
        name, 
        recovery_model_desc  
    FROM sys.databases
    WHERE name = 'PetHotel';

    結果:

    +----------+-----------------------+
    | name     | recovery_model_desc   |
    |----------+-----------------------|
    | PetHotel | FULL                  |
    +----------+-----------------------+

    リカバリモデルは指定どおりに正常に変更されました。

    重要な考慮事項

    単純リカバリモードから他のモードに切り替える場合、切り替えは最初のデータバックアップ後にのみ有効になります。

    したがって、単純リカバリモードから完全または一括ログリカバリモデルに切り替えるとすぐに、データベースの完全バックアップまたは差分バックアップを作成してログチェーンを開始する必要があります。

    からに切り替えた場合 シンプルリカバリモデルの場合は、トランザクションログをバックアップするためにスケジュールされたジョブを必ず無効にしてください(シンプルリカバリモデルはログバックアップを使用しません)。

    また、バルクリカバリモデルは、特にバルク操作用です。この目的で完全復旧モデルから一括ロギングモデルに切り替える場合は、一括操作を実行した後、完全復旧モードに戻す必要があります。

    一括ログ復旧モデルから完全復旧モデルに切り替えた後は、必ずログをバックアップしてください。

    各リカバリモデルの概要については、MicrosoftWebサイトのリカバリモデルを参照してください。


    1. SQL Serverで特定の文字のUnicode値を返す方法– UNICODE()

    2. SQL Serverネットワークインターフェイス:接続文字列が無効です[87]

    3. SQLのROW_NUMBER–SQLおよびSQLServerの上位の例を選択

    4. SysBenchを使用してMySQLのパフォーマンスをベンチマークする方法