現象
次のような状況で問題が発生します。
-
SQL Server 2005 のインスタンスで、パブリケーションデータベースからの列フィルターを含むパブリケーションを作成します。
-
パブリケーションデータベースのデータベースバックアップを SQL Server 2012、2014、または2016のインスタンスに復元します。
-
子パッケージには、式で指定された接続文字列が含まれています。
-
たとえば、 RESTOREステートメントでKEEP_REPLICATIONオプションを使用して、レプリケーション設定を保持します。
このシナリオでは、SQL Server 2012、2014、または2016でレプリケーションが機能しません。
原因
この問題が発生するのは、article 列オブジェクトの長さが、SQL Server 2005 用の2バイトと SQL Server 2012、2014、2016用の4バイトのテーブルメタデータから取得されるためです。 このため、このオブジェクトにアーティクルの列 id を挿入しようとすると、最初の2バイトがそのままの状態でコピーされます。
解決方法
この問題は、SQL Server の次の累積的な更新プログラムで修正されました。
SQL Server 2016 SP1 の累積更新プログラム2
Sql server 2016 の累積更新プログラム4の累積更新プログラム 3 (sql Server 2014 の累積更新プログラム 10 (sql server 2014 SP1)
SQL Server 用の新しい累積更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正が含まれています。 SQL Server の最新の累積的な更新プログラムを確認します。
Sql server 2016 の最新の累積的な更新プログラム sql SERVER2014 SP1/SP2の最新の累積更新プログラムsql server 2012 の最新の累積的な更新プログラム
状態
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。
関連情報
Microsoft でソフトウェアの更新について説明する 用語 について説明します。