2

2 つの列 (id と name) を持つ tvp_Shipment という名前のユーザー定義テーブル タイプを作成しました。スナップショットが生成され、ユーザー定義のテーブル タイプがすべてのサブスクライバーに適切に伝達されました。

私はこの tvp をストアド プロシージャで使用していましたが、すべて正常に動作しました。

次に、このテーブル値パラメーターにもう 1 つの列 created_date を追加したいと思いました。ストアド プロシージャを (レプリケーションからも) 削除し、3 つの列を持つユーザー定義テーブル タイプを削除して再作成し、ストアド プロシージャを再作成して公開できるようにしました。

新しいスナップショットを生成すると、ユーザー定義テーブル タイプの変更がサブスクライバーに反映されません。新しく追加された列はサブスクリプションに追加されませんでした。

エラーメッセージ:

The schema script 'usp_InsertAirSa95c0e23_218.sch' could not be propagated to the subscriber. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)
Get help: http://help/MSSQL_REPL-2147201001
Invalid column name 'created_date'. (Source: MSSQLServer, Error number: 207)
Get help: http://help/207
4

1 に答える 1

2

パブリケーションで、replicate_ddl オプションが true に設定されていますか? また、問題の記事の pre_cmd の値は何ですか? どちらも正しい方向を示していない場合は、失敗しているというファイルを見てください。これは、ディストリビューターのスナップショット フォルダーにある、人間が判読できる T-SQL ファイルである必要があります。エラーが明らかでない場合は、サブスクライバーで実行してみて、何が表示されるかを確認してください。私の推測では、列の変更は複製されませんでしたが、その列を参照するインデックスを付けました。しかし、それは単なる推測です。

于 2011-01-09T18:37:42.150 に答える