適用於具備高效能工作負載 SQL Server 2017 及 SQL Server 2016 的建議更新及設定選項

本文說明 SQL Server 2017 和 SQL Server 2016 可用的效能改進和組態選項清單。

原始產品版本: SQL Server 2017、SQL Server 2016
原始 KB 編號: 4465518

簡介

本文說明透過各種產品更新和組態選項,Microsoft SQL Server 2017 和 SQL Server 2016 可用的效能改進和變更。

建議您考慮套用這些更新,以改善 SQL Server 實例的效能。 改善程度將取決於各種因素,包括工作負載模式、爭用點、處理器配置(處理器群組、套接字、NUMA 節點和 NUMA 節點的核心數目),以及系統中可用的記憶體數量。

SQL Server 支援小組使用這些更新和組態變更,為使用包含數個 NUMA 節點和大量處理器的硬體系統的客戶工作負載達到合理的效能提升。 支援小組會在未來持續更新本文。

定義:高階系統
「高階系統」通常具有多個插槽、每個插槽 8 個核心或更多,以及 0.5 TB 或更多記憶體。

改善 SQL Server 2017 和 SQL Server 2016 效能的這些建議會分成五個數據表,如下所示:

  • 表 1 包含最常建議的更新和追蹤旗標 (trace flags),以取得高端系統上的延展性。
  • 表 2 包含其他效能微調的建議和指引。
  • 表 3 包含 SQL 2017 和 2016 中行為和預設設定變更的相關信息。
  • 表 4 包含其他延展性修正,並隨累積更新(CU)一併提供。
  • 表 5 包含針對部署在 Linux 環境中之 SQL Server 實例的建議修正和設定指導方針。

附註

如需更多背景資訊,請參閱 用於調校高負載 SQL Server 的常用設定。

重要

如果您啟用追蹤旗標,請務必在執行移轉至 SQL Server 2017 或 SQL Server 2016 之後檢閱該文章中的資訊。 該文章中列出的許多追蹤旗標和組態選項都已成為 SQL Server 2017 和 SQL Server 2016 中的預設選項。

資料表 1。 高階系統的重要更新和追蹤旗標參數

檢閱下表,並在確認您的 SQL Server 實例符合 適用版本和組建範圍 資料行中的需求後,於 追蹤旗標 資料行中啟用追蹤旗標。

附註

  • 適用的版本和組建版本 指出引進變更或追蹤旗標的特定更新。 如果未指定 CU,則會包含 SP 中的所有 CU。
  • 不適用版本和組建編號 表示變更或追蹤旗標成為預設行為的特定更新。 因此,只要套用該更新就足以獲得權益。

重要

當您在 Always On 環境中啟用具有追蹤旗標的修正時,請注意,您必須在所有屬於可用性群組的複本上啟用修正和追蹤旗標。

要考慮的案例和症狀 追蹤旗標 適用的版本和建置版本範圍 不適用的版本和建置範圍 如需詳細資訊,請參閱知識庫文章或部落格連結
大量 SOS_CACHESTORE 自旋鎖競爭,或您的計畫經常在臨機查詢工作負載中被逐出。 T174 SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU 無 KB3026083 - 修正:SQL Server 特定查詢計劃快取中的 SOS_CACHESTORE 自旋鎖爭用會導致 SQL Server 中的 CPU 使用率偏高
計劃快取中的項目會因為其他快取或記憶體 Clerk 的增加而被逐出。 高 CPU 耗用量,因為經常重新編譯查詢。 T8032 SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU 無 DBCC TRACEON - 追蹤旗標 (Transact-SQL) 的文件。 請參閱 Plan Cache Internals 的「快取大小管理」一節。
tempdb 被大量使用,而且對 tempdb 中的數據進行了許多修改。 使用 tempdb 資料庫的間接檢查點時,您會遇到未讓出之排程器訊息。 T3468 SQL Server 2016 SP1 CU5 至目前的 SP/CU SQL Server 2017 CU1 至目前的 SP/CU 無 間接檢查點和 tempdb - 好、壞和無回應的排程程式KB4040276 - 修正:tempdb 資料庫上的間接檢查點會導致 SQL Server 2016 和 2017 中的「無回應的排程程式」錯誤
tempdb 中經常發生短暫事務。 您注意到這些交易的CPU使用量增加。一般準則合規性未啟用 T3427 SQL Server 2016 SP1 CU2 至 SQL Server 2016 SP2 CU2 SQL Server 2017 RTM KB3216543 - FIX:在 SQL Server 2016 和 2017 中使用許多頻繁、簡短交易作業的工作負載,可能會比 SQL Server 2014 耗用更多 CPU
您要針對特定查詢效能問題進行疑難解答。 Optimizer 修正功能預設為停用。
T4199 SQL Server 2016 RTM 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU 無 KB974006 - SQL Server 查詢優化器 Hotfix 追蹤旗標 4199 服務模型
注意:請考慮使用資料庫範圍選項 QUERY_OPTIMIZER_HOTFIXES 或查詢提示 ENABLE_QUERY_OPTIMIZER_HOTFIXES,而不是伺服器層級追蹤旗標 4199。
統計數據作業需要很長的時間才能完成。 無法平行執行多個統計數據更新作業。 T7471 SQL Server 2016 RTM CU1 至目前的 SP/CU SQL Server 2017 RTM 至目前的 SP/CU 無 KB3156157 - 同時針對單一數據表上的不同統計數據執行多個 UPDATE STATISTICS 已可使用
使用 SQL 2014 和 SQL 2016 提升更新統計數據效能

表 2. 改善 SQL Server 實例效能的一般考慮和最佳做法

檢閱 知識庫文章或 Books Online 資源 欄中的內容,並考慮實作 建議動作 欄中的指引。

知識庫文章或 Books Online 資源 建議操作
設定平行處理原則的上限伺服器組態選項 使用 sp_configure 預存程序,根據知識庫文章,對您 SQL Server 執行個體的 Configure the max degree of parallelism Server Configuration Option 進行組態變更。
依版本計算容量限制 SQL Server 2012 的授權核心限制 具有伺服器和用戶端存取授權 (CAL) 授權的企業版限制為每個 SQL Server 實例 20 個核心。

在以核心為基礎的伺服器授權模型下沒有限制。

請考慮將 SQL Server 版本升級至適當的 SKU,以使用所有硬體資源。
使用平衡電源計劃時,Windows Server 效能變慢 檢閱文章,並與您的 Windows 系統管理員合作,以實作文章的 [解決] 區段中所列的其中一個解決方案。
針對臨機操作工作負載優化 伺服器組態選項

FORCED PARAMETERIZATION
計劃快取中的項目會因為其他快取或記憶體 Clerk 的增加而被清除。 當快取達到其項目數目上限時,也可能會發生計畫快取逐出。 除了上述所討論的追蹤旗標 8032 之外,請考慮 optimize for ad hoc workloads 伺服器選項以及 FORCED PARAMETERIZATION 資料庫選項。
如何減少 SQL Server 中緩衝池記憶體的分頁

SQL Server 2012 和更新版本中的記憶體設定和容量規劃考量
將 記憶體鎖定頁面選項(Windows) 的使用者權限指派給 SQL 服務啟動帳戶。

將伺服器記憶體上限設定為大約90%的總物理記憶體。 請確定 [ 伺服器記憶體組態選項 ] 設定僅計入來自設定為使用親和性遮罩設定之節點的記憶體。
SQL Server 與大頁面說明... 如果您有具有大量記憶體的伺服器,特別是針對分析或數據倉儲工作負載,請考慮啟用 追蹤旗標 834。 請記住:SQL Server 中資料行存放區索引與大型頁面記憶體模型的互通性。
與大型安全性快取相關聯的查詢效能問題

當 TokenAndPermUserStore 快取的大小在 SQL Server 中成長時,查詢需要較長的時間才能完成執行

DBCC TRACEON - 追蹤旗標 (Transact-SQL)
如果安全性快取成長為大型大小,而且您遇到效能問題和自旋鎖爭用,請考慮啟用追蹤旗標 T4610 和 T4618 以減少 TokenAndPermuserStore 的大小上限。
ALTER WORKLOAD GROUPKB3107401 - SQL Server 2012 中可使用新的查詢記憶體授與選項(min_grant_percent 和 max_grant_percent) 如果您有許多查詢耗用大量記憶體授與,請將資源管理員設定中預設工作負載群組的 request_max_memory_grant_percent 從預設 25% 調降為較低的值。 SQL Server 中有新的查詢記憶體授與選項(min_grant_percent 和 max_grant_percent)可供使用。
SQL 2016 - 就是跑得更快:自動 TEMPDB 設定 如果這是升級的伺服器,請為tempdb資料庫新增大小相等的多個資料檔。 針對新的安裝,安裝程式會自動執行這項作業。
TEMPDB - 檔案和追蹤旗標和更新 藉由避免或減少暫存物件上的 DDL,使用 tempdb 優化並改善延展性。
即時檔案初始化 請與您的 Windows 系統管理員合作,根據《線上叢書》主題中的資訊,授與 SQL Server 服務帳戶「執行磁碟區維護工作」使用者權限。
SQL Server 中「自動成長」和「自動縮減」設定的考量 檢查您資料庫的目前設定,並確定它們已根據知識庫文章中的建議進行設定。
間接檢查點 請考慮在使用者資料庫上啟用間接檢查點,以優化 SQL Server 2014 和 2012 中的 I/O 行為。
SQL Server:大容量 RAM 和 DB 檢查點 請考慮在使用者資料庫上啟用間接檢查點,以優化 SQL Server 2014 和 2012 中的 I/O 行為。 檢閱參考文章 Indirect Checkpoint and tempdb - the good, the bad and the non-yielding scheduler 中所述的 tempdb 必要調整。
KB3009974 - 修正:當磁碟在 SQL Server AG 和 Logshipping 環境中有不同扇區大小的主要和次要復本記錄檔時,同步處理速度變慢 如果您有一個可用性群組,其中主要復本上的交易記錄位於具有 512 位元組扇區大小的磁碟上,而次要復本上的交易記錄位於具有 4-K 扇區大小的磁碟機上,您可能會遇到同步處理速度緩慢的問題。 在此情況下,啟用 TF 1800 應該更正問題。 如需詳細資訊,請參閱 追蹤旗標 1800。
查詢分析基礎結構

KB3170113 - 在 SHOWplan XML 和 SQL Server 2014 SP2 的擴充事件中公開個別運算元查詢執行統計資料的更新
如果您的 SQL Server 尚未受 CPU 限制,且 1.5% 至 2% 的額外負荷對您的工作負載而言可忽略不計,建議您啟用 TF 7412 作為啟動追蹤旗標。 此旗標會啟用輕量型分析,適用於 SQL Server 2014 SP2 或更新版本。 這可讓您在生產環境中進行實時查詢疑難解答。
使用查詢存放區識別計劃選擇回歸啟用最佳查詢計劃 使用查詢存放區功能來識別回歸或執行不佳的查詢。 如果因為基數估計而發生查詢效能問題,請選取適當的 CE 版本:資料庫範圍選項 LEGACY_CARDINALITY_ESTIMATION、查詢提示 LEGACY_CARDINALITY_ESTIMATION、資料庫相容性層級或 追蹤旗標 9481。
新基數估算器中的聯結包含關係假設會降低查詢效能 評估使用聯接和篩選的查詢,以了解簡單和基底內含的效果。 當您使用預設基數估算器時,請針對簡單內含使用追蹤旗標 9476,而不是基底內含。
相容性層級 130 的改進相容性層級 140 的改進 使用資料庫相容性層級 130 或更新版本,以受益於下列改善:
  • 更新較大數據表之現有統計數據的自適性臨界值和積極臨界值
  • 更好的統計數據更新取樣和鎖定機制
  • 多線程進程取樣的統計數據
  • 能夠使用平行執行來執行 INSERT...SELECT

  • 使用資料庫相容性層級 140 或更新版本,以受益於下列改善:
  • 使用交錯執行多重語句數據表值函式和自適性聯結等新功能,改善基數估計和計劃品質
  • 透過記憶體授與回饋改善記憶體使用量
  • 使用查詢存放區的最佳作法
    將擷取模式設定為 [自動]
    啟用追蹤旗標 7745 和 7752,以改善高可用性和災害復原案例期間 查詢存放區 的效能。

    如果您在高工作負載下遇到 查詢存放區 spinlock 爭用,請套用 KB4340759 - FIX: 啟用 查詢存放區 時,SQL Server 2016 的效能緩慢 中的修正。
    SQL Server 2016/2017:可用性群組次要複本重做模型和效能 如果您遇到太多等候時間(PARALLEL_REDO_TRAN_TURN、DPT_ENTRY_LOCK或DIRTY_PAGE_TABLE_LOCK),請參閱這篇部落格文章以採取修正措施(套用適用的修正,評估 redo model 的適當使用方式)。
    KB2634571 - 使用 PHYSICAL_ONLY 選項時,DBCC CHECKDB 命令的改善可能會導致效能提升

    DBCC TRACEON - 追蹤旗標

    更快的 CHECKDB - 第四部分 (SQL CLR UDT)
    如果您在大型資料庫上執行 DBCC CHECK 命令(多個 TB 大小),請考慮使用追蹤旗標 T2562、T2549 和 T2566。

    SQL Server 2016 中,數個檢查現在位於 EXTENDED_LOGICAL_CHECK 選項下。
    保護 SQL Server 免受 Spectre 和 Meltdown 側通道漏洞攻擊 仔細評估在您的環境中各種 SQL Server 工作負載上,核心虛擬位址陰影處理 (KVAS)、核心分頁表間接化 (KPTI) 和間接分支預測緩解措施 (IBP) 的效能。

    表 3. SQL Server 2017 和 SQL Server 2016 中引進的重要變更

    SQL Server 2017 和 SQL Server 2016 包含延展性和效能領域的多項改善。 SQL Server 2014 和 SQL Server 2012 中所需的各種組態變更和追蹤旗標已成為 SQL Server 2017 和 2016 的預設行為。 下表提供 SQL Server 2017 和 SQL Server 2016 中實作之所有變更的概觀。

    區域 變更摘要 詳細資訊和參考
    SQL 引擎 SQL Server 2016 和更新版本的 SQL Server 中已淘汰或不再需要的常用追蹤旗標:8048、8079、9024、1236、1118、1117、6498、8075、3449、6532、6533、6534。 SQL Server 追蹤旗標
    資料庫引擎 資料庫引擎 的新功能 - SQL Server 2017
    資料庫引擎 SQL Server 2016 中對於 資料庫引擎 功能的重大變更/中斷性變更
    資料庫引擎 SQL Server 2017 中 資料庫引擎 功能的重大變更
    查詢處理數據類型轉換 SQL Server 2016 (13.x) 包括某些資料類型轉換和某些(大多數較少見的)作業的改進。 如需詳細資訊,請參閱處理某些資料類型和不常見作業的 SQL Server 2016 改進 (機器翻譯)。
    可用性群組 針對輔助資料庫,初始化自動植入會使用資料庫鏡像端點,將資料庫內容串流至輔助資料庫,並加以套用。 SQLSweet16!,第 2 集:可用性群組自動植入初始化
    可用性群組 當 SQL Server 2016 將記錄區塊從主要傳輸至次要時,會使用較少的情境切換次數。 SQL 2016 - 就是跑得更快:Always On 記錄傳輸減少內容切換SQL Server 2016 - 就是跑得更快:Always On 可用性群組效能大幅提升
    可用性群組 SQL Server 2016 使用改良的壓縮演算法和記錄區塊數據的平行壓縮。 SQL 2016 - 執行速度更快:Always On 平行壓縮 / 改良的演算法
    可用性群組 SQL Server 2016 利用具備 AES-NI 加密能力的硬體,藉此大幅改善 Always On 記錄傳送延展性和效能。 SQL 2016 - 執行速度更快 - Always On AES-NI 加密
    效能 SQL Server 2016 會偵測 AVX 或 SSE 的 CPU 功能,並使用硬體型向量功能來改善壓縮、建置字典及處理數據行存放區數據時的延展性和效能。 SQL 2016 - 它只會更快執行:資料行存放區使用向量指令(SSE/AVX)
    效能 SQL Server 2016 利用 CPU 向量指令來改善大量插入效能。 SQL 2016 - 它只是執行得更快 - BULK INSERT 使用向量指令(SSE/AVX)
    效能 SQL Server 2016 讓 INSERT ... SELECT 陳述式可使用平行處理,大幅縮短資料載入時間。 SQLSweet16! 第3集:平行 INSERT ... SELECT
    效能 SQL Server 2016 可在數據表的個別分割區上執行 TRUNCATE 作業,以封存較舊的分割區。 SQLSweet16!,第 5 集:TRUNCATE 選取的分割區
    效能 SQL Server 2016 會視需要動態調整記憶體內部最佳化資料庫背景工作執行緒集區的大小。 SQL 2016 - 執行速度更快:記憶體內部最佳化資料庫工作者集區
    Tempdb 在 tempdb 和使用者資料庫中的配置會使用統一的完整延伸區。 tempdb 中的檔案成長會同時發生於所有檔案。 SQL 2016 - 執行速度更快:針對 TEMPDB 和使用者資料庫的 -T1117 和 -T1118 變更
    Tempdb 資料庫引擎 安裝程式會自動計算tempdb資料檔的數目。 SQL 2016 - 就是跑得更快:自動 TEMPDB 設定
    儲存體 資料庫引擎會使用0xC0戳記,而不是0x00事務歷史記錄檔初始化。 SQL 2016 - 它只會更快執行:LDF 戳記
    儲存體 對於大型記憶體伺服器和大量寫入環境,間接檢查點的執行效能會更好。 SQL 2016 - 執行速度更快:間接檢查點預設值
    儲存體 高比率的交易可受益於多個日誌寫入器將日誌快取排清至交易記錄檔。 SQL 2016 - 就是跑得更快:多個記錄寫入器背景工作執行緒
    備份與還原 如果您指定 MAXTRANSFERSIZE 大於65536,則可以使用TDE來壓縮備份以加密資料庫。 SQLSweet16!,第 1 集:已啟用 TDE 的資料庫備份壓縮
    SQL 作業系統 (SQL OS) 動態分割記憶體物件,以減少記憶體物件爭用。 SQL 2016 - 它只會執行得更快:易失記憶體物件 (CMemThread) 數據分割
    SQL 作業系統 (SQL OS) SQL Server 2016 會監視工作角色的量子使用模式,讓所有工作角色都能得到公平待遇並改善延展性。 SQL 2016 - 執行速度更快:更新的排程演算法
    SQL 作業系統 (SQL OS) SQL Server 2016 會偵測硬體配置,並在每個 NUMA 節點回報有 8 個或更多 CPU 的系統上自動設定軟體 NUMA。 數據分割會觸發整個資料庫引擎的各種調整,以改善延展性和效能。 SQL 2016 - 執行速度就是更快:自動 Soft-NUMA
    DBCC CHECK(資料庫完整性檢查) 指定 MAXDOP 來管理 DBCC CHECK 命令所耗用的資源。 SQLSweet16!,第 6 集:DBCC CHECKDB 與 MAXDOP
    DBCC CHECK(資料庫完整性檢查) DBCC CHECK 使用改良的頁面掃描演算法,其爭用較少,且具有進階的預先讀取功能。 SQL 2016 - 執行速度更快:DBCC 擴充性提升 7 倍
    DBCC CHECK(資料庫完整性檢查) 當 SQL Server 評估特殊資料類型和索引時,DBCC CHECK 命令需要很長的時間。 這些檢查已移至 EXTENDED_LOGICAL_CHECKS 選項下。 SQL 2016 - 它只會執行得更快:DBCC 延伸檢查
    字碼頁 BULK INSERT 或 bcp 公用程式已改善,以將 UTF-8 數據載入 SQL Server 中的數據表。 SQLSweet16!,第 10 集:“我可以吃玻璃...,但我可以將它載入資料庫嗎?
    空間 SQL Server 2016 會在 T-SQL 執行期間,針對許多空間方法移除 PInvoke 和 PUnInvoke 活動。 SQL 2016 - 執行更快速:原生空間實作
    空間 SQL Server 2016 可透過原生空間驗證來改善使用空間數據的TVP延展性。 SQL 2016 - 執行速度更快:具有空間資料行的 TVP(s)
    空間 原生和 TVP 空間改善可讓 SQL Server 優化空間資料的索引建立和網格劃分。 SQL 2016 - 就是跑得更快:空間索引建置更快
    MSDTC SQL Server 2016 會視需要動態啟動 MSDTC,讓資源在需要之前可用於其他活動。 SQL 2016 - 運用 MSDTC 的隨選啟動
    XEvent XEvent Linq 提供者邏輯會進行各種變更,以減少內容切換、記憶體配置和其他層面的負擔,從而更快速地呈現事件。 SQL 2016 - 執行速度更快:XEvent Linq 讀取器

    表 4. CU 中包含的重要修正

    檢閱 徵兆 欄中的描述,並在適用的環境中套用 必要更新 欄中的必要更新(最好是包含特定修正的最新更新)。 您可以檢閱知識庫文章,以取得有關個別問題的詳細資訊。 這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非本文或此表格中明確指出。 只要套用包含這些修正的最新 CU 或 Service Pack 就足以獲得好處。

    注意必要更新欄中的 CU 名稱會提供可解決此問題的 SQL Server 第一個 CU。 累積更新包含所有 Hotfix,以及隨附於先前 SQL Server 更新版本的所有更新。 如 SQL Server 增量服務模型的更新中所述,建議您以持續主動的節奏安裝最新的累積更新,以解決或防止所述問題。 另請注意,從 SQL Server 2017 開始,引進了 適用於 SQL Server 的新式服務模型,以便不再提供 Service Pack。

    適用版本 區域或元件 已處理問題的描述 建議更新
    SQL Server 2016、SQL Server 2017 備份與還原 啟用 TDE 的資料庫記錄備份失敗,並在使用非預設 MAXTRANSFERSIZE 時,尋找過去用來加密 DEK 的舊憑證複本時,間歇性傳回錯誤 33111 修正:在 SQL Server 中備份 TDE 加密的資料庫時發生錯誤 33111 和 3013
    SQL Server 2017 的累積更新 2
    SQL Server 2016 SP1 的累積更新 6
    SQL Server 2016 的累積更新 9
    SQL Server 2016、SQL Server 2017 備份與還原 在 SQL Server 中,對 TDE 壓縮備份執行 RESTORE HEADERONLY 語句時完成速度緩慢 修正:SQL Server 中 TDE 壓縮備份的 RESTORE HEADERONLY 語句完成速度變慢
    SQL Server 2017 的累積更新 8
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2016 備份與還原 在啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔 修正:在 SQL Server 2016 中啟用 TDE 的資料庫中使用 INIT 和 COMPRESSION 選項時,無法壓縮備份檔
    SQL Server 2016 RTM 的累積更新 7
    適用於 SQL Server 2016 SP1 的 CU 4
    SQL Server 2016 備份與還原 在 SQL Server 中備份大型 TDE 加密資料庫時發生判斷失敗
    SQL Server 2016 SP1 的累積更新 4
    SQL Server 2016 備份與還原 當您在已啟用 TDE 的資料庫上使用壓縮和總和檢查碼進行備份時,還原會失敗 修正:當您在 SQL Server 2016 中啟用 TDE 的資料庫上使用壓縮和總和檢查碼進行備份時,還原會失敗
    SQL Server 2016 RTM 的累積更新 7
    SQL Server 2016 SP1 的累積更新 4
    SQL Server 2016 備份與還原 當您嘗試從 SQL Server 中大型 TDE 加密資料庫的多個檔案還原壓縮備份時發生錯誤 9004 修正:當您嘗試從多個檔案還原大型 TDE 加密資料庫的壓縮備份時發生錯誤 9004
    SQL Server 2016 RTM 的累積更新 7
    SQL Server 2016、SQL Server 2017 備份與還原 當您使用 SQL Server 中 4 K 扇區上的壓縮來還原備份時,還原效能變慢 KB4088193 - 修正:在 SQL Server 中還原具有 4K 扇區大小的磁碟上壓縮備份時,還原效能變慢
    SQL Server 2016 SP1 的累積更新 9
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2017 的累積更新 7
    SQL Server 2016、SQL Server 2017 備份與還原 [VDI] 使用 VDI 用戶端時,TDE 壓縮備份的還原失敗 SQL Server 2017 的累積更新 7
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2016 SP1 的累積更新 9
    SQL Server 2016、SQL Server 2017 備份與還原 [VDI] 透過 VDI 介面還原備份壓縮且啟用 TDE 的資料庫失敗,並傳回 OS 錯誤 38
    SQL Server 2017 的累積更新 8 [VSTS Bug # 10936552]
    SQL Server 2016 SP2 RTM [VSTS 錯誤 # 10698847]
    SQL Server 2016、SQL Server 2017 備份與還原 [VSS] 透過 VSS 型應用程式備份可用性資料庫可能會在 SQL Server 中失敗 修正:透過 VSS 型應用程式備份可用性資料庫可能會在 SQL Server 中失敗
    SQL Server 2017 的累積更新 1
    SQL Server 2016 RTM 的累積更新 9
    SQL Server 2016 SP1 的累積更新 5
    SQL Server 2014 SP2 的累積更新 8
    SQL Server 2016、SQL Server 2017 備份與還原 如果加密金鑰儲存在 SQL Server 的 EKM 提供者中,啟用 TDE 的備份和還原速度會變慢 加密金鑰儲存在 EKM 時,啟用 TDE 的備份和還原速度緩慢
    SQL Server 2017 的累積更新 8
    SQL Server 2016 Service Pack 2 的累積更新 1
    SQL Server 2016 Service Pack 1 的累積更新 9
    SQL Server 2016、SQL Server 2017 AlwaysOn AG數據行存放區 使用非叢集索引搜尋擷取數據的查詢需要較長的時間 修正:在 SQL Server 中,使用非叢集索引尋找的資料擷取查詢花費的時間要長得多
    SQL Server 2017 的累積更新 2
    SQL Server 2016 Service Pack 1 的累積更新 6
    SQL Server 2016 的累積更新 9
    SQL Server 2016、SQL Server 2017 AlwaysOn AG 可用性群組的次要複本中平行重做,其中包含堆積數據表會產生運行時間判斷提示傾印或執行 SQL Server 的伺服器當機,並傳回存取違規錯誤 修正:包含堆積數據表之可用性群組的次要複本中平行重做會產生運行時判斷提示傾印,或 SQL Server 當機併發生存取違規錯誤
    SQL Server 2016 SP1 的累積更新 9
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2017 的累積更新 6
    SQL Server 2016 AlwaysOn AG 當您在 SQL Server Always On 可用性群組的次要複本中使用平行重做時,就會發生 Assertion 錯誤 修正:當您在 SQL Server Always On 可用性群組的次要複本中使用平行重做時,就會發生 Assertion 錯誤
    SQL Server 2016 的累積更新 3
    SQL Server 2016、SQL Server 2017 AlwaysOn AG 處理讀取查詢時,AlwaysOn AG 的效能變慢 修正:在 SQL Server 中處理讀取查詢時,AlwaysOn AG 速度緩慢
    SQL Server 2017 的累積更新 8
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2016 SP1 的累積更新 9
    SQL Server 2017 AlwaysOn AG 縮短 Linux 上 SQL Server 的可用性群組容錯移轉時間的改進 改善以降低可用性群組在 Linux 上的 SQL Server 中的故障轉移持續時間
    SQL Server 2017 的累積更新 8
    SQL Server 2017 AlwaysOn AG SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善
    SQL Server 2017 的累積更新 8
    SQL Server 2016 記憶體 平行重做會導致高記憶體使用量 修正:相較於 SQL Server 2014 或舊版,平行重做會在 SQL Server 2016 中造成高記憶體使用量
    SQL Server 2016 SP1 的累積更新 3
    SQL Server 2016、SQL Server 2017 記憶體 sp_execute_external_script和 DMV sys.dm_exec_cached_plans會導致記憶體流失 修正:系統預存程式sp_execute_external_script和 DMV sys.dm_exec_cached_plans導致 SQL Server 2017 和 2016 中的記憶體流失
    SQL Server 2017 的累積更新 4
    SQL Server 2016 SP1 的累積更新 8
    SQL Server 2016、SQL Server 2017 記憶體 SQL Server 行程的虛擬位址空間不足時發生記憶體不足錯誤 當 SQL Server 行程的虛擬位址空間不足時,記憶體不足錯誤
    SQL Server 2017 的累積更新 4
    SQL Server 2016 SP1 的累積更新 8
    SQL Server 2016 記憶體 當您在 SQL Server 中使用 Azure 儲存體 時,就會發生記憶體流失 當您在 SQL Server 2014 或 2016 中使用 Azure 儲存體時,就會發生記憶體洩漏
    SQL Server 2016 RTM 的累積更新 5
    SQL Server 2016 SP1 的累積更新 2
    SQL Server 2016 的累積更新 2
    SQL Server 2016、SQL Server 2017 記憶體內 OLTP In-Memory 最佳化檔案群組發生大量磁碟檢查點使用量 修正:在大量非 In-Memory 工作負載期間,In-Memory 優化檔案群組出現大量磁碟檢查點使用量
    SQL Server 2017 的累積更新 6
    SQL Server 2016 SP1 的累積更新 8
    SQL Server 2016 的累積更新 1
    SQL Server 2016 記憶體內部最佳化 OLTP 當您將數據插入記憶體優化數據表時,檢查點檔案會過度成長 修正:當您將數據插入 SQL Server 2016 中記憶體優化數據表時,檢查點檔案會過度成長
    SQL Server 2016 SP1 的累積更新 2
    SQL Server 2016 的累積更新 4
    SQL Server 2016、SQL Server 2017 記憶體內部 OLTP 當資料庫包含記憶體優化數據表時,資料庫復原需要很長的時間 在 SQL Server 2017 和 2016 中復原具有記憶體優化數據表的資料庫需要很長的時間
    SQL Server 2017 的累積更新 4
    SQL Server 2016 SP1 的累積更新 7
    SQL Server 2016、SQL Server 2017 tempdb PFS 頁面循環調度演算法改進 SQL Server 2016 中的 PFS 頁面循環配置演算法改進
    SQL Server 2017 的累積更新 7
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2016 SP1 的累積更新 9
    SQL Server 2016、SQL Server 2017 tempdb 效能問題會以 TempDB(sys.sysobjvalues 和 sys.sysseobjvalues)中的 PAGELATCH_EX 和 PAGELATCH_SH 等候形式發生 效能問題會以PAGELATCH_EX和PAGELATCH_SH等候的形式發生
    SQL Server 2016 Service Pack 2 的累積更新 1
    SQL Server 2016 Service Pack 1 的累積更新 9
    SQL Server 2016、SQL Server 2017 tempdb 繁重的 tempdb 爭用。修改具有具名限制條件的 Temp 資料表時,需要同步卸除暫存資料表 SQL Server 2016 或 2017 中發生大量 tempdb 爭用
    SQL Server 2017 的累積更新 5
    SQL Server 2016 SP1 的累積更新 8
    SQL Server 2017 tempdb 移除暫存物件時發生 PAGELATCH_EX 爭用(sys.sysobjvalues) 修正:在 SQL Server 中移除暫存物件時PAGELATCH_EX爭用
    SQL Server 2017 的累積更新 5
    SQL Server 2016 tempdb sys.sysobjvalues 中增加PAGELATCH_EX爭用 修正:SQL Server 2016 中 sys.sysobjvalues 的 PAGELATCH_EX 爭用增加問題
    SQL Server 2016 RTM 的累積更新 6
    SQL Server 2016 Service Pack 1 的累積更新 2
    SQL Server 2016、SQL Server 2017 tempdb tempdb 資料庫的間接檢查點會導致「非讓出式排程器」錯誤 修正:tempdb 資料庫上的間接檢查點會導致 SQL Server 2017 和 2016 中發生「非讓出式排程器」錯誤
    SQL Server 2017 的累積更新 1
    SQL Server 2016 Service Pack 1 的累積更新 5
    SQL Server 2016 的累積更新 8
    SQL Server 2016、SQL Server 2017 tempdb 使用許多頻繁、簡短交易的工作負載可能會耗用更多 CPU 在 SQL Server 2017 和 2016 中使用許多頻繁、簡短交易處理的工作負載,可能會比 SQL Server 2014 耗用更多 CPU
    SQL Server 2017 的累積更新 4
    SQL Server 2016 SP1 的累積更新 2
    SQL Server 2016、SQL Server 2017 事務記錄檔 錯誤 9002:沒有足夠的磁碟空間可供關鍵記錄檔增長 KB4087406 - 修正:當 SQL Server 2014、2016 和 2017 中沒有足夠磁碟空間供關鍵記錄檔增長時,會發生錯誤 9002
    SQL Server 2017 的累積更新 5
    SQL Server 2016 SP2 的累積更新 1
    SQL Server 2016 SP1 的累積更新 8
    SQL Server 2014 SP2 的累積更新 11
    SQL Server 2016 安全性快取 高 CPU 使用量會導致 SQL Server 2016 的高同步鎖定競爭SECURITY_CACHE和CMED_HASH_SET SQLSweet16!第 8 集:SQL Server 2016 累積更新 2 (CU2) 如何改善高度並行工作負載的效能 KB3195888 - 修正:高 CPU 使用量會導致 SQL Server 2016 和 2017 中的效能問題
    SQL Server 2016 的累積更新 2
    SQL Server 2017 查詢存放區 查詢存放區 (查詢存放區) 收集執行階段統計資料時,就會發生存取違規 SQL Server 2017 中 查詢存放區 收集執行階段統計資料時發生存取違規
    SQL Server 2017 的累積更新 5
    SQL Server 2016 查詢存放區 查詢存放區 Enterprise 和 Developer Edition 以外的版本上的自動數據清除失敗 查詢存放區 SQL Server 2016 Enterprise 和 Developer Edition 以外的版本上的自動數據清除失敗
    SQL Server 2016 的累積更新 1
    SQL Server 2016 查詢存放區 啟用 查詢存放區 時 SQL Server 效能變慢 KB4340759 - 修正:啟用 查詢存放區 時 SQL Server 2016 效能變慢
    SQL Server 2016 SP2 的累積更新 2

    下表是 SQL Server 2017 發行之後,在累積更新中發行的所有重要改進、建議和程式代碼變更的彙整。 檢閱 [徵兆] 數據行中的描述,並在適用的環境中,套用必要更新(最好是包含特定修正的最新更新)。 您可以檢閱列出的知識庫文章,以取得有關個別問題的詳細資訊。

    這些建議不需要您啟用其他追蹤旗標作為啟動參數,除非本文或此表格中明確指出。 只要套用包含這些修正的最新累積更新或 Service Pack 就足以獲得好處。 如果您在 Linux 上的 SQL Server 中使用 Always On 可用性群組,請將 SQL Server 2017 升級至累積更新 8 或更新版本,因為此更新中已提供數項改善。 注意 在 必要更新 欄中的 CU 名稱表示可解決此問題的第一個 SQL Server 累積更新。 累積更新包含所有 Hotfix 和先前 SQL Server 更新版本隨附的所有更新。 如對SQL Server 增量服務模型的更新中所述,我們現在建議您以持續且主動的節奏安裝最新的累積更新,以解決或防止所述的問題。 另請注意,從 SQL Server 2017 開始,引進了 SQL Server 的 Modern Servicing Model,以便不再提供 Service Pack。

    變更或改進的摘要 詳細資訊和參考
    SQL 和 OS:在部署 Linux 上的 SQL Server 時,檢閱 OS 和 SQL Server 的各種最佳做法建議 Linux 上 SQL Server 的效能最佳做法和設定方針
    SQL Agent 改進:SQL Server Agent 作業可以啟動,而不需要等待所有資料庫完成復原程序 SQL Server Agent 作業可以啟動,而不需要等待所有資料庫在Linux上的 SQL Server 2017 中復原
    SQL Server 2017 的累積更新 9
    儲存體改善:在 SQL Server 2017 中啟用「強制排清」機制 在 Linux 上的 SQL Server 2017 中啟用強制排清機制
    SQL Server 2017 的累積更新 6
    儲存體改善:將 master 資料庫和錯誤記錄檔移至另一個位置 KB4053439 - 改進:將 master 資料庫和錯誤記錄檔移至 Linux 上 SQL Server 2017 的另一個位置
    SQL Server 2017 的累積更新 4
    AG 改善:SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善 KB4339875 - SQL Server 中 Pacemaker 叢集上 AlwaysOn 可用性群組的改善
    SQL Server 2017 的累積更新 8
    記憶體改善:最小記憶體限制設定為 2 GB 以安裝或啟動 SQL Server KB4052969 - FIX:安裝或啟動 SQL Server 2017 的最低記憶體限制設定為 2 GB
    SQL Server 2017 的累積更新 2
    記憶體 修正:啟用 TF 834 之後記憶體增加階段太長 KB4075203 - FIX:Linux 上的 SQL Server 2017 中啟用 TF 834 之後記憶體增加階段太長
    SQL Server 2017 的累積更新 4
    排程 修正:SQL Server 2017 中 Windows 和 Linux 排程器對應之間的可攜性和效能不同 KB4043455 - FIX:SQL Server 2017 中 Windows 和 Linux 排程器對應關係在可移植性和效能方面存在差異
    SQL Server 2017 的累積更新 1
    AD 驗證機制 修正:無法根據屬於父網域的使用者建立登入帳號 KB4073670 - FIX:無法在 Linux 上的 SQL Server 2017 中,根據屬於父域的使用者建立登入
    SQL Server 2017 的累積更新 4
    AD Auth 更新:藉由限制在地理範圍廣大的網路中可連絡的 KDC 來改善 SQL Server 效能 KB4463314 - 更新可藉由在地理範圍廣大的網路中限制可連絡的 KDC,藉以改善 SQL Server 效能
    SQL Server 2017 的累積更新 11
    AD 驗證 修正:當您使用第三方 Active Directory 提供者時,SQL Server 會當機 KB4466962 - 修正:當您使用第三方 Active Directory 提供者時,SQL Server 2017 當機
    SQL Server 2017 的累積更新 12
    TSQL 修正:NEWSEQUENTIALID 函式會在重新啟動 SQL Server 之後產生重複的 GUID KB4078097 - 修正:在 Linux 上的 SQL Server 2017 重新啟動之後,NEWSEQUENTIALID 函式會產生重複的 GUID
    SQL Server 2017 的累積更新 4
    連線 修正:使用 TCP 通訊協定連線時未預期的記憶體耗用量 KB4073045 - 修正:Linux 上的 SQL Server 2017 使用 TCP 通訊協定連線時,會發生非預期的記憶體耗用量
    SQL Server 2017 的累積更新 4
    連線 修正:啟動時停用 IPv6 時發生名稱解析錯誤 KB4053392 - 修正:在 Linux 上的 SQL Server 2017 啟動時停用 IPv6 時發生名稱解析錯誤
    SQL Server 2017 的累積更新 2
    連線 修正:SQL Server 未在 mssql-conf 指令碼所指定的非預設 IP 位址上接聽 KB4053393 - 修正:Linux 上的 SQL Server 2017 不會接聽 mssql-conf 腳本所指定的非預設 IP 位址
    SQL Server 2017 的累積更新 2
    安裝程式 修正:套用 CU 時腳本升級失敗 升級 SQL Server 2017 CU4 或更新版本且未在 Linux 上啟用 SQL Agent 時發生錯誤
    SQL Server 2017 的累積更新 6
    Database Mail FIX:使用非預設 TCP 連接埠時,Database Mail 無法連線到 SQL Server KB4100873 - FIX:使用非預設 TCP 連接埠時,Database Mail 無法連線到 Linux 上的 SQL Server 2017
    SQL Server 2017 的累積更新 6
    容器 修正:無法使用 「docker stop」 命令來停止 SQL Server Linux Docker 容器 KB4093805 - FIX:無法使用 “docker stop” 命令停止 SQL Server Linux Docker 容器
    SQL Server 2017 的累積更新 5
    容器 修正:在Linux Docker容器中執行 SQL Server 時發生記憶體不足錯誤 KB4347055 - 修正:在 Linux Docker 容器中執行 SQL Server 2017 時發生記憶體不足錯誤
    SQL Server 2017 的累積更新 10
    AG:如果您使用 Pacemaker 套件 1.1.18-11.el7 或更高版本,請調整 start-failure-is-fatal 屬性 KB4229789 - SQL Server 2017 的累積更新 7
    請參閱Pacemaker 注意事項一節
    AG FIX:Pacemaker 可能會在作業逾時時終止資源代理程序進程 KB4460203 - FIX:當 SQL Server 2017 Always On 可用性群組中的作業逾時時,Pacemaker 可能會終止資源代理程序進程
    SQL Server 2017 的累積更新 11
    AG 修正:兩個 SQL Server 執行個體是可用性群組的主要複本 KB4316791 - 修正:兩個 SQL Server 實例是 SQL Server 中可用性群組的主要複本
    SQL Server 2017 的累積更新 8
    AG FIX:當您使用 AlwaysOn 可用性群組時,不必要的故障轉移 KB4056922 - 修正:在 Linux 上的 SQL Server 2017 中使用 Always On 可用性群組時,不必要的故障轉移
    SQL Server 2017 的累積更新 3
    AG 修正:Pacemaker 會降級 Always On AG 的現有主要複本,且不會提升新的複本為主要複本 KB4076982 - FIX:Pacemaker 會在 Linux 上的 SQL Server 2017 中降級 Always On AG 的現有主要複本,絕不會提升新的主要複本
    SQL Server 2017 的累積更新 4
    AG FIX:Pacemaker 會在您使用 AlwaysOn AG 時,將未同步復本升級為主要複本 KB4091722 - FIX:在 Linux 上的 SQL Server 2017 中使用 Always On AG 時,Pacemaker 會將未同步複本升級為主要複本
    SQL Server 2017 的累積更新 5
    AG FIX:使用 Always On AG 時,Pacemaker 將本機複本提升為主要複本失敗 KB4230542 - 修正:在 SQL Server 2017 中使用 Always On AG 時,Pacemaker 將本機複本升級為主要複本失敗
    SQL Server 2017 的累積更新 7
    AG FIX:啟動屬於可用性群組的資料庫逾時 KB4316790 - FIX:在 Linux 上的 SQL Server 中,啟動屬於可用性群組的資料庫時會逾時
    SQL Server 2017 的累積更新 8
    AG FIX:當 SQL Server 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,會發生不必要的故障轉移 KB4316793 - 修正:當 SQL Server 2017 故障轉移叢集實例或 Always On AG 由 Pacemaker 管理時,會發生不必要的故障轉移
    SQL Server 2017 的累積更新 8