共用方式為


SQL Server 2025 中資料庫引擎功能的重大變更

適用於: SQL Server 2025 (17.x)

本文說明了 SQL Server 2025(17.x)引入的 SQL Server 資料庫引擎功能中出現的重大變更。 這些變更可能會中斷以舊版 SQL Server 為基礎的應用程式、腳本或功能。

升級後連結伺服器連線失敗

SQL Server 2025(17.x) 包含加密的變更,這些變更對 連結伺服器造成破壞性影響。 這些變更可能會中斷以舊版 SQL Server 為基礎的應用程式、腳本或功能。

當你從先前版本的 SQL Server 升級到 SQL Server 2025(17.x)並搭配 Microsoft OLE DB Driver 19 時,現有的連結伺服器設定可能會失敗。 除非提供有效的憑證,否則加密參數的不同預設值可能會導致此失敗。

在 SQL Server 2025(17.x) 中:

關於如何安全連接 SQL Server 2025(17.x)實例的資訊,請參見 TDS 8.0

升級後複寫元件失敗

SQL Server 2025(17.x)包含對加密的變更,導致對交易式快照點對點合併複寫產生破壞性的變更。

如果你的 SQL Server 實例具備以下條件,從所有先前版本的 SQL Server 升級到 SQL Server 2025(17.x)後,複寫元件可能會失敗:

  • 已設定為複寫發佈者。
  • 在複寫拓蹼中具有遠端散發者。
  • 未設定受信任的憑證。

升級之後,您可能會看到下列行為:

  • 複寫會繼續成功,但發行集的變更會失敗。
  • SQL Server Management Studio (SSMS) 中的複寫監視器失敗。
  • SSMS UI 中的代理程式狀態失敗。

遠端散發者使用連結伺服器進行發行者與散發者之間的通訊。 SQL Server 2025(17.x)所引入的 OLEDB 19 提供者的安全預設值要求 TrustServerCertificate=False

您可以在開始升級之前先先解決此問題,或者如果升級後複寫元件失敗,則可以解決此問題。

開始升級之前

如果您知道 SQL Server 執行個體在升級之後會遇到此問題,您可以將 SQL Server 執行個體設定為使用 公用商業憑證來自內部憑證授權單位的憑證,以先發制人地減輕失敗。

這是獲得最大安全性的建議選項。

升級後失敗的元件

如果您的複寫元件在升級後失敗,您仍然可以將 SQL Server 執行個體設定為使用 公用商業憑證來自內部憑證授權單位的憑證。

或者,您可以選擇一個安全性較低的選項來覆寫 OLEDB 19 提供者的安全預設值,並設定 trust_distributor_certificate=yes 以使分發者信任自我簽署的憑證。

若要覆寫新的安全預設值,請使用 sp_changedistributor_property 預存程序將選項設定 trust_distributor_certificateyes

EXECUTE sp_changedistributor_property
    @property = N'trust_distributor_certificate',
    @value = N'yes';

備註

安全性預設值與底層 OLEDB 提供者 19 相關,這提升了安全性。 覆寫預設值的選項比將執行個體設定為使用受信任憑證更不安全。 覆寫預設值之後,您可以選擇將 SQL Server 設定為使用憑證,然後使用 sp_changedistributor_property 預存程序將屬性設定 trust_distributor_certificate=no 回安全預設值。

新增遠端複寫散發者失敗

SQL Server 2025(17.x)包含對加密的變更,這些變更對交易式快照點對點合併複寫導致斷裂性改變。

設定散發者進行複寫時, sp_adddistributor 預存程序會在下列情況下失敗:

  • 發佈者是 SQL Server 2025 (17.x) 實例。
  • 分銷商是遠程的。
  • 散發者未設定受信任的憑證。

在發行者執行個體上執行 sp_adddistributor 時,您可能會看到下列錯誤:

OLE DB provider "MSOLEDBSQL19" for linked server "repl_distributor" returned message
"Client unable to establish connection".
Msg -2146893019, Level 16, State 1, Line 21
SSL Provider: The certificate chain was issued by an authority that is not trusted.

遠端散發者使用連結伺服器進行發行者與散發者之間的通訊。 SQL Server 2025(17.x)引入的 OLEDB 19 提供者安全預設要求 TrustServerCertificate=False

若要解決此問題,請將散發者 SQL Server 執行個體設定為使用 公用商業憑證來自內部憑證授權單位的憑證。

或者,您可以選擇一個安全性較低的選項來覆寫 OLEDB 19 提供者的安全預設值,並設定 TrustServerCertificate=True 以使分發者信任自我簽署的憑證。 若要覆寫預設值,請在呼叫trust_distributor_certificate預存程序時使用參數:

EXECUTE sys.sp_adddistributor @trust_distributor_certificate = 'yes';

備註

安全性預設值與底層 OLEDB 提供者 19 相關,這提升了安全性。 覆寫預設值的選項比將執行個體設定為使用受信任憑證更不安全。 覆寫預設值之後,您可以選擇將 SQL Server 設定為使用憑證,然後使用 sp_changedistributor_property 預存程序將屬性設定 trust_distributor_certificate=no 回安全預設值。

遠端日誌傳送監視可能會中斷

SQL Server 2025(17.x) 包含加密變更 ,導致 日誌運送有突破性的變更。 升級時可能會遇到這些問題。

如果監控器是遠端的 SQL Server 2025 (17.x) 實例,而日誌運送拓撲中的其他 SQL Server 實例使用舊版本,日誌運送監控可能會中斷。

關於如何安全連接 SQL Server 2025(17.x)實例的資訊,請參見 TDS 8.0

全域內容查詢和數據集在升級後失敗

SQL Server 2025(17.x)移除了 Full-Text 搜尋中使用的所有舊有詞語破壞器與過濾二進位檔。 這些元件以現代化工具組重建,並擴展支援更多語言與文件類型。 升級後的現有索引將根據index_version = 1,依照sys.fulltext_indexes進行指定。 新建立的索引被指定為版本 2,並使用新元件,除非在資料庫 FULLTEXT_INDEX_VERSION 範圍設定中另有指定。

在升級後立即,任何針對版本 1 索引的全文檢索查詢在磁碟上無法找到文字斷詞程式檔案。

Msg 30010, Level 16, State 2, Line 8
An error has occurred during the full-text query. Common causes include: word-breaking errors or timeout, FDHOST permissions/ACL issues, service account missing privileges, malfunctioning IFilters, communication channel issues with FDHost and sqlservr.exe, etc. If recently performed in-place upgrade to SQL2025, For help please see https://aka.ms/sqlfulltext.

同樣地,任何在版本 1 索引上執行的全文檢索載入過程,在升級後無法在磁碟中找到過濾器的二進位檔案。

Warning: No appropriate filter was found during full-text index population for table or indexed view '[db].[dbo].[table_name]' (table or indexed view ID '901578250', database ID '5'), full-text key value '1'. Some columns of the row were not indexed.

用新版本重建現有索引

建議繼續使用索引的方法是用更新版 2 的元件重建索引。

-- Verify value = 2
SELECT *
FROM sys.database_scoped_configurations
WHERE [name] = 'FULLTEXT_INDEX_VERSION';

-- Per catalog upgrade
ALTER FULLTEXT CATALOG [FtCatalog] REBUILD;

唯一能升級單一索引而不重建整個目錄的方法,就是丟棄並重新建立索引。

繼續使用版本1

如果為了應用程式相容性必須維持在版本 1,請先確保你設定 FULLTEXT_INDEX_VERSION = 1,以避免重建時意外升級。

ALTER DATABASE SCOPED CONFIGURATION
    SET FULLTEXT_INDEX_VERSION = 1;

接著你必須將舊有實例的舊版字斷字程式和篩選程式的執行檔複製到目標實例的 binn 資料夾。