我创建了一个名为tvp_Shipment的用户定义表类型,其中包含两列(id和name)。生成快照,用户定义的表类型已正确传播到所有订阅者。
我在存储过程中使用这个tvp,一切正常。
然后我想再添加一列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
答案 0 :(得分:2)
在发布上,replicate_ddl选项是否设置为true?此外,相关文章的pre_cmd值的值是多少?如果这些都没有指向正确的方向,请查看它说失败的文件。它应该是一个人类可读的T-SQL文件,位于快照文件夹中的分发服务器上。如果错误不明显,您可以尝试在订阅者处运行它并查看它给您的内容。我的猜测是它没有复制列更改,但是你在其上放了一个引用该列的索引。但这只是猜测。