2

我创建了一个名为 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
4

1 回答 1

2

在发布时,replicate_ddl 选项是否设置为 true?另外,相关文章的 pre_cmd 值是多少?如果这些都没有为您指明正确的方向,请查看它说失败的文件。它应该是一个人类可读的 T-SQL 文件,位于快照文件夹中的分发服务器中。如果错误不明显,您可以尝试在订阅服务器上运行它,看看它会给您带来什么。我的猜测是它没有复制列更改,但是您在其上放置了一个引用该列的索引。但这只是一个猜测。

于 2011-01-09T18:37:42.150 回答