KB4488856 - 修正: SQL Server 2016 および 2017 をアップグレードした後で発行元を削除するか、データベースを発行用に有効にすると、エラー 2812 および 20028 が発生する

適用先
SQL Server 2016 Developer - duplicate (do not use) SQL Server 2016 Enterprise - duplicate (do not use) SQL Server 2016 Enterprise Core - duplicate (do not use) SQL Server 2016 Standard - duplicate (do not use)

現象

たとえば次のようなシナリオを考えてみます。

  • トランザクション レプリケーションの公開環境は、次の SQL Server バージョンで使用します。
    • SQL Server 2016 Service Pack 2 (SP2) の累積的な更新プログラム 3 (CU3) より前のバージョン
    • SQL Server 2017 の累積的な更新プログラム 6 (CU6) より前のバージョン
  • このサーバーをディストリビューターとして構成し、ディストリビューション データベースを作成します。
  • このサーバーまたは別のサーバーを発行元としてこのディストリビューター サーバーに追加しますが、パブリケーションは作成しません。
  • その後、SQL Server を累積的な更新プログラム 3 for SQL Server 2016 SP2 以降のバージョンにアップグレードするか、SQL Server を累積的な更新プログラム 6 for SQL Server 2017 以降のバージョンにアップグレードします。

この場合、ディストリビューターからパブリッシャー サーバーを削除すると、次のようなエラー メッセージが表示される場合があります。

メッセージ 2812、レベル 16、状態 62、プロシージャ sp_dropdistpublisher、行 番号

ストアド プロシージャが見つかりませんでした。

データベースを発行用に有効にすると、次のようなエラー メッセージが表示される場合があります。

メッセージ 20028、レベル 16、状態 1、プロシージャ ProcedureName、行 行番号

ディストリビューターが正しくインストールされていません。 データベースの発行を有効にできませんでした。

データベース 'DatabaseName' のレプリケーション オプション 'publish' が false に設定されています。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

解決策

この問題は、次の SQL Server の累積的な更新プログラムで修正されています。

SQL Server の累積的な更新プログラムについて:

SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。

参考資料

マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。