Sql-Server

什麼可能阻止我的事務日誌自動增長設置為無限?

  • October 18, 2019

我一直在嘗試將我的一個數據庫的自動增長設置為,unlimited但無論我做什麼,它都保持不變。

我首先檢查了是否有東西對我的數據庫持有任何鎖

select radhe='kill ' + cast(DTL.request_session_id as varchar(3))
     ,DTL.request_session_id
     ,DTL.resource_type
     ,DTL.request_type
     ,DTL.request_status
     ,DEST.TEXT
     , SP.spid
     , SP.blocked
     , SP.status
     , SP.loginame 
from sys.dm_tran_locks DTL
INNER JOIN sys.sysprocesses SP  
      ON DTL.request_session_id = SP.spid   
  --INNER JOIN sys.[dm_exec_requests] AS SDER ON SP.[spid] = [SDER].[session_id] 
  CROSS APPLY sys.dm_exec_sql_text(SP.sql_handle) AS DEST  
where 1=1
 and resource_type = 'database' 
 and resource_database_id = db_id('junofinance')
 and request_type = 'LOCK' 
 and request_status = 'GRANT'

但是沒有任何東西持有任何數據庫鎖。所以我繼續執行以下命令:

use master
ALTER DATABASE [JUNOFinance] 
MODIFY FILE ( NAME = N'JUNOFinance_log', MAXSIZE = UNLIMITED)
GO

當我檢查日誌重用時,我得到以下資訊:

select log_reuse_wait_desc, * from sys.databases
where name = 'junofinance'

在此處輸入圖像描述

但這不是問題,因為在我幾次嘗試這些腳本之後,我得到了: 在此處輸入圖像描述

然後,當我檢查日誌 maxsize 時,我仍然受到限制:

exec sp_helpdb 'junofinance'

在此處輸入圖像描述

我什至嘗試了一些愚蠢的事情,比如禁用自動增長並將其設置為 UNLIMITED

USE [master]
GO

GO
ALTER DATABASE [JUNOFinance] MODIFY FILE ( NAME = N'JUNOFinance_log', MAXSIZE = UNLIMITED, FILEGROWTH = 0)
GO

然後它工作正常,去圖!

但是當我重新啟用它時,它又回到了限制:

USE [master]
GO

GO
ALTER DATABASE [JUNOFinance] MODIFY FILE ( NAME = N'JUNOFinance_log', FILEGROWTH = 10240KB )
GO

在此處輸入圖像描述

特別是在這台伺服器上,我無法升級它,所以我們在:

Microsoft SQL Server 2016 (SP2-CU7) (KB4495256) - 13.0.5337.0 (X64)

2019 年 5 月 16 日 02:24:21 版權所有 (c) Microsoft Corporation Enterprise Edition:Windows Server 2012 R2 上基於核心的許可(64 位)數據中心 6.3(內部版本 9600:)(管理程序)

如果打開 BOL 文章sys.database_files (Transact-SQL)

你會發現 268435456= 日誌文件將增長到最大大小2 TB

2 Tb是 SQL Server 數據庫的最大大小log file,如果您需要它而不是2Tb添加第二個log file

在這裡,您可以找到SQL Server 的最大容量規範,該規範指出這2Tb是最大log file大小:

在此處輸入圖像描述

引用自:https://dba.stackexchange.com/questions/251450