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

修正:SQL Server(およびSQL Edge)の「リカバリモデルがSIMPLEである間は、ステートメントBACKUPLOGは許可されません」

    リカバリモデルがSIMPLEである間は、ステートメントBACKUPLOGは許可されませんというエラーが発生した場合 SQLServerまたはAzureSQLEdgeでデータベースをバックアップしようとすると、単純なリカバリモデルを使用するデータベースでトランザクションログをバックアップしようとしているためです。

    これを修正するには、リカバリモデルをフルロギングまたはバルクロギングに変更します。

    エラー

    エラーが発生するT-SQLコードの例を次に示します。

    BACKUP LOG Music 
    TO DISK = '/var/opt/mssql/backups/Music.trn';

    結果:

    Msg 4208, Level 16, State 1, Line 1
    The statement BACKUP LOG is not allowed while the recovery model is SIMPLE. Use BACKUP DATABASE or change the recovery model using ALTER DATABASE.

    原因

    前述のように、このエラーは、単純なリカバリモデルを使用するデータベースでトランザクションログをバックアップしようとすると発生します。

    単純なリカバリモデルは、ログのバックアップをサポートしていません。

    ソリューション

    この問題を解決するには、データベースリカバリモデルをFULLのいずれかに設定します。 またはBULK_LOGGED

    USE master;  
    ALTER DATABASE Music 
    SET RECOVERY FULL;

    この例では、データベースを完全復旧モードに設定します。

    ただし、トランザクションログのバックアップを開始する前に、少なくとも1つのデータベースの完全バックアップを実行する必要もあります。これを行わないと、エラー4214が発生します。これは、現在のデータベースバックアップがないため、バックアップログを実行できないことを示しています。 。

    データベースの完全バックアップを実行する例を次に示します。

    BACKUP DATABASE Music 
        TO DISK = '/var/opt/mssql/backups/Music.bak' 
        WITH FORMAT;

    これで、必要に応じてトランザクションログをバックアップできます:

    BACKUP LOG Music 
    TO DISK = '/var/opt/mssql/backups/Music.trn';

    結果:

    Processed 3 pages for database 'Music', file 'Music_log' on file 1.

    Azure SQL Edgeを使用していますか?

    Azure SQL Edgeを使用している場合、この問題が頻繁に発生する可能性があります。これは、SQLEdgeで作成されたデータベースがデフォルトで単純なリカバリモデルを使用しているためと考えられます。これは、model データベースは単純な回復モデルを使用しています。

    modelでいつでもリカバリモデルを変更できます データベースをFULLに 、これにより、後続のデータベースはデフォルトで完全復旧モードを使用します。


    1. Oracle:2つの日付を減算し、結果の分を取得する方法

    2. Debian10に最新のMySQL8をインストールする方法

    3. SQL:使用可能なすべてのテーブルからすべてのデータを削除します

    4. Oracleシーケンストリガーの作成