web-dev-qa-db-ja.com

トランザクションログがいっぱいです(NOTHINGのため)...しかし、このデータベースは単純復旧モードです

私はまだauthnetシステムに「aspnetdb」を使用している古いWebアプリケーション(間もなく廃止される)をサポートしています。テストサーバーで次のエラーが表示されると、テスト環境での廃止に備えていくつかの作業を行っていました。

'NOTHING'のため、データベース 'aspnetdb'のトランザクションログがいっぱいです。

さて、通常、問題はデータベーストランザクションログにあると思いますが、このデータベースは最近、シンプルリカバリモードに切り替えられました(管理者は、test-SQL-serverが容量不足であると不満を言っていたので、彼女は単純復旧に切り替えました)。

私は運が悪い状態でいくつかの実験を試み、かなりグーグルでやった。他の回答は、トランザクションログのサイズの増加について話します...しかし、トランザクションログファイルと自動拡張に関連するすべてのオプションは、SSMSでグレー表示されます-トランザクションログファイルは存在ですか?私はトランザクションログを無制限のサイズに設定しようとしました

alter database aspnetdb modify file (NAME = 'aspnetdb_log', maxsize = UNLIMITED, FILEGROWTH = 100MB)

しかし、それは同じエラーで失敗するだけです。

以前にこのエラーを見た人はいますか?シンプルリカバリモードのデータベースの完全なトランザクションログ?

Aspnetdbが古いため、SQL Server 2016で2008互換モードで実行されています。

1
Pxtl

以下のスクリプトを実行して、ログファイルのサイズ、最大サイズ、増加量を確認します。

SELECT 
    @@SERVERNAME AS [Server],
    db.name AS [Database],
    mf.name AS [File],
    CASE mf.[type_desc]
        WHEN 'ROWS' THEN 'Data File'
        WHEN 'LOG' THEN 'Log File'
    END AS [FileType],
    CAST(mf.[size] AS BIGINT)*8/1024 AS [SizeMB],
    CASE
        WHEN mf.[max_size] = -1 THEN 'Unlimited'
        WHEN mf.[max_size] = 268435456 THEN 'Unlimited'
        ELSE CAST(mf.[max_size]*8/1024 AS NVARCHAR(25)) + ' MB'
    END AS [MaxSize],
    CASE [is_percent_growth]
        WHEN 0 THEN CONVERT(VARCHAR(6), CAST(mf.growth*8/1024 AS BIGINT)) + ' MB'
        WHEN 1 THEN CONVERT(VARCHAR(6), CAST(mf.growth AS BIGINT)) + '%'
    END AS [GrowthIncrement]
FROM sys.databases db
LEFT JOIN sys.master_files mf ON mf.database_id = db.database_id

最大サイズと現在のサイズが等しい場合、これが問題の原因である可能性があります。その場合は、次のコマンドを試してください。

ALTER DATABASE [db_name] MODIFY FILE (NAME = 'file name', MAXSIZE = <new max size> GB);
1
HandyD