適用対象: SQL Server 2025 (17.x)
この記事では、SQL Server 2025 (17.x) で導入された SQL Server データベース エンジンの機能に対する破壊的変更について説明します。 これらの変更により、以前のバージョンの SQL Server に基づくアプリケーション、スクリプト、または機能が中断される可能性があります。
アップグレード後にリンク サーバー接続が失敗する
SQL Server 2025 (17.x) には、リンク サーバーに破壊的変更を導入する暗号化の変更が含まれています。 これらの変更により、以前のバージョンの SQL Server に基づくアプリケーション、スクリプト、または機能が中断される可能性があります。
Microsoft OLE DB Driver 19 を使用して以前のバージョンの SQL Server から SQL Server 2025 (17.x) にアップグレードすると、既存のリンク サーバー構成が失敗する可能性があります。 有効な証明書が指定されていない限り、暗号化パラメーターの既定値が異なると、このエラーが発生する可能性があります。
SQL Server 2025 (17.x):
-
SQL Server 2025 のインスタンスへのリンク サーバーでは、接続文字列で
Encryptパラメーターを使用する必要があります - Microsoft OLE DB Driver 19 を使用して以前のエディションの SQL Server から SQL Server 2025 に移行すると、既存のリンク サーバー構成が失敗する可能性があります
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 のエージェントの状態が失敗します。
リモート ディストリビューターは、パブリッシャーとディストリビューター間の通信にリンク サーバーを使用します。 OLEDB 19 プロバイダーの SQL Server 2025 (17.x) で導入されたセキュリティで保護された既定値では、 TrustServerCertificate=Falseが必要です。
アップグレードを開始する前にこの問題を先取りして解決することも、アップグレード後にレプリケーション コンポーネントが失敗した場合に問題を解決することもできます。
アップグレードを開始する前に
アップグレード後に SQL Server インスタンスでこの問題が発生することがわかっている場合は、 パブリック商用証明書 または 内部証明機関の証明書を使用するように SQL Server インスタンスを構成することで、障害を予防的に軽減できます。
これは、セキュリティを最大限に高める推奨オプションです。
アップグレード後に失敗したコンポーネント
アップグレード後にレプリケーション コンポーネントが失敗した場合でも、 パブリック商用証明書 または 内部証明機関の証明書を使用するように SQL Server インスタンスを構成できます。
または、セキュリティが低いオプションを選択して、OLEDB 19 プロバイダーのセキュリティで保護された既定値をオーバーライドし、ディストリビューターが自己署名証明書を信頼するように trust_distributor_certificate=yes 設定することもできます。
新しいセキュリティで保護された既定値をオーバーライドするには、 sp_changedistributor_property ストアド プロシージャを使用して、 trust_distributor_certificate オプションを yesに設定します。
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.
リモート ディストリビューターは、パブリッシャーとディストリビューター間の通信にリンク サーバーを使用します。 OLEDB 19 プロバイダーの SQL Server 2025 (17.x) で導入されたセキュリティで保護された既定値では、 TrustServerCertificate=Falseが必要です。
この問題を解決するには、 パブリック商用証明書 または 内部証明機関の証明書を使用するようにディストリビューター SQL Server インスタンスを構成します。
または、セキュリティが低いオプションを選択して、OLEDB 19 プロバイダーのセキュリティで保護された既定値をオーバーライドし、ディストリビューターが自己署名証明書を信頼するように TrustServerCertificate=True 設定することもできます。 既定値をオーバーライドするには、sp_adddistributor ストアド プロシージャを呼び出すときに 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 インスタンスで以前のバージョンが使用されている場合、モニターがリモート SQL Server 2025 (17.x) インスタンスである場合、ログ配布の監視が中断される可能性があります。
SQL Server 2025 (17.x) インスタンスに安全に接続する方法については、 TDS 8.0 を参照してください。
アップグレード後に Full-Text クエリとポピュレーションの処理が失敗する
SQL Server 2025 (17.x) では、 Full-Text Search で使用されるすべてのレガシ ワード ブレーカーとフィルター バイナリが削除されます。 これらのコンポーネントは、最新のツールセットを使用して再構築され、より多くの言語とドキュメントの種類に対するサポートが拡張されています。 アップグレード後の既存のインデックスは、index_version = 1に従ってsys.fulltext_indexesで指定されます。 新しく作成されたインデックスはバージョン 2 に指定され、 FULLTEXT_INDEX_VERSION データベース スコープ構成を使用して特に指定しない限り、新しいコンポーネントを使用します。
バージョン 1 のインデックスに対する Full-Text クエリは、アップグレード直後にディスク上のワード ブレーカー バイナリを見つけることができません。
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 のインデックスで発行された Full-Text ポピュレーションでは、アップグレード後にディスク上のフィルター バイナリを見つけることができません。
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 フォルダーにバイナリをフィルター処理する必要があります。