現象
Microsoft SQL Server 2016 がディストリビューターとして機能し、SQL Server 2014 または SQL Server 2012 がパブリッシャーとして機能するセットアップがあるとします。 このセットアップでは、SQL Server 2012 または SQL Server 2014 Publisher にアーティクルとしてユーザー定義関数 (UDF) を使用してスナップショット、トランザクション、またはマージ文書を作成すると、UDF のスクリプト作成中にスナップショット エージェントが失敗し、次のようなエラー メッセージが表示されます。
注
UserDefinedFunction 'schema.functionname' のスクリプトに失敗しました
スナップショット エージェントのジョブ履歴には、次のエラー メッセージが表示されます。
注
<DateTime> [5%] レプリケーション エージェントで例外が発生していた
<DateTime> ソース: 不明
<DateTime> 例外の種類: Microsoft.SqlServer.Management.Smo.FailedOperationException
<DateTime> 例外メッセージ: UserDefinedFunction 'schema.functionname' のスクリプトに失敗しました
<DateTime> メッセージ コード: 該当なし
原因
この問題は、スナップショット エージェント が SMO Miscrosft.SqlServer.Smo.dll を使用して記事をスクリプト化するために発生します。 SQL Server 2016 では、In-Memory 関数/ストアド プロシージャ用に新しい SMO プロパティ IsNativelyCompiled が追加されています。 このプロパティは、SQL Server 2016 より前のバージョンの SQL Server では表示されません。 SQL Server 2016 のディストリビューターで スナップショット エージェント を実行すると、SQL Server 2016 の Microsoft.SqlServer.Smo.dll が使用されますが、SQL Server 2012 または 2014 Publisher に対して SMO プロパティ IsNativelyCompiled をチェックしようとすると、上記のエラーで失敗します。
解決策
この問題は、次の SQL Server の累積的な更新プログラムで修正されています。
SQL Server 2016 SP1 の累積的な更新プログラム 2
SQL Server 2016 の累積的な更新プログラム CU 38
SQL Server 用の累積的な更新プログラムについて
SQL Server 用の新しい累積的な更新プログラムには、以前の累積的な更新プログラムに含まれていたすべての修正プログラムとすべてのセキュリティ修正プログラムが含まれています。 SQL Server の最新の累積的な更新プログラムを確認してください。
SQL Server 2016 の最新の累積的な更新プログラム
回避策
この問題を回避するには、サブスクライバーでユーザー定義関数 (UDF) を手動で作成します。
状態
Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。
参考資料
マイクロソフトでソフトウェア更新プログラムの説明に使用する用語集を参照してください。