Sql-Server

Traceflag 1800 是否需要重新啟動?

  • April 9, 2020

我們最近將數據庫鏡像遷移到了新硬體。輔助伺服器上的日誌驅動器(和其他 SQL Server 驅動器)已格式化為 64KB 塊大小,而主伺服器使用預設的 4KB。

因此,我們幾乎不斷地在輔助日誌中獲得以下條目 -

There have been N misaligned log IOs which required falling back to synchronous IO. The current IO is on file L:\SQLSERVER\Logs\MyDatabase_log.ldf.

本文建議修復是在伺服器上打開跟踪標誌 1800

根據 Microsoft 的建議,扇區大小為 512 字節

我在兩台伺服器上都執行了以下命令:

fsutil fsinfo ntfsinfo L:\

並且可以看到主要的:

Bytes Per Sector  :               512
Bytes Per Physical Sector :       512
Bytes Per Cluster :               4096
Bytes Per FileRecord Segment :    1024

和次要的:

Bytes Per Sector  :                512
Bytes Per Physical Sector :        4096
Bytes Per Cluster :                65536
Bytes Per FileRecord Segment :     1024

因此,似乎應該在主伺服器上啟用 traceflag 1800。

考慮到這一點,我DBCC TRACEON (1800, -1); 在主節點上執行並驗證它是否與DBCC TRACESTATUS

然後我檢查了輔助節點上的錯誤日誌,可以看到有關 Async IO 的消息仍然存在。

此跟踪標誌是否需要設置為啟動參數(隨後重新啟動)才能生效?顯然我無論如何都會這樣做,所以它會持續重啟,但只是執行第DBCC TRACEON一個,所以它是活動的

文件沒有提到需要重新啟動。

顯然,找出答案的方法是測試,但由於這是一個生產伺服器,我需要一個維護視窗來處理我目前無法使用的

最終,主伺服器將遷移到新硬體,我將確保以相同的方式格式化磁碟,但作為平局,我希望這個跟踪標誌能提供快速修復。

如果我不能讓它工作,我想中間選項是將現有主節點上的日誌驅動器重新格式化為 64KB 塊大小

您引用的文件說:

必須全域啟用全域跟踪標誌。否則,跟踪標誌無效。我們建議您在啟動時使用 -T 命令行選項啟用全域跟踪標誌。這可確保在伺服器重新啟動後跟踪標誌保持活動狀態。重新啟動 SQL Server 以使跟踪標誌生效。

使用 DBCC TRACEON 和 DBCC TRACEOFF 命令。例如,要全域啟用 2528 跟踪標誌,請使用帶有 -1 參數的 DBCC TRACEON:DBCC TRACEON (2528, -1)。**使用 DBCC TRACEON 啟用全域跟踪標誌的效果會在伺服器重新啟動時失去。**要關閉全域跟踪標誌,請使用帶有 -1 參數的 DBCC TRACEOFF。

在標誌 1800 的定義上,它說:

在 SQL Server Always On 和日誌傳送環境中,當不同扇區大小的磁碟用於主副本和輔助副本日誌文件時,啟用 SQL Server 優化。只有事務日誌文件駐留在磁碟上的扇區大小為 512 字節的 SQL Server 實例上才需要啟用此跟踪標誌。它不需要在具有 4k 扇區大小的磁碟上啟用。有關詳細資訊,請參閱此 Microsoft 支持文章。

注意:此跟踪標誌適用於 SQL Server 2012 (11.x) SP1 CU13、SQL Server 2012 (11.x) SP2 CU3、SQL Server 2014 (12.x) RTM CU5 和更高版本。

範圍:僅限全球

這意味著需要重新啟動,具體取決於您使用的配置方法:如果 by DBCC TRACEON,則不需要重新啟動。如果按-T,則需要重新啟動。


由於您現在沒有使用 -T 推薦選項重新啟動伺服器的維護視窗,因此您可以使用 DBCC TRACEON 立即啟動它,並在服務屬性上配置 -T 而無需重新啟動 SQL Server。這樣下次伺服器重啟時,DBCC TRACEON配置的標誌會失去,但選項-T會生效。

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