合并复制无法复制UD类型

问题描述 投票:1回答:1

我有一个包含一些用户定义类型的数据库。据我了解,Merge Replication将自动包含已使用的UD类型。其中一种类型是在函数中使用的表变量。在发布者网站上工作正常,但在订阅者网站上它无法同步。为什么会这样?

  • 我试图复制使用该类型的一个函数,并成功。之后复制工作正常。
  • 当我尝试将相同的配置发送到另一个系统时,它在开始时失败,就像之前系统上的原始尝试一样,但现在即使我尝试复制一个过程,我仍然得到相同的错误。

错误如下:

架构脚本'some name.sch'无法传播给订户。

当我追踪错误时:

找不到数据类型dbo.someName

sql-server tsql merge replication merge-replication
1个回答
1
投票

我想Hilary Cotter在这个论坛上给出的答案可以帮到你:

Transactional Replication and User Defined Data Types

我会在这里引用它以防链接被破坏:

您可以选择通过预快照脚本复制用户定义的数据类型。

您还可以选择将用户定义的数据类型复制为基本数据类型。这是文章属性对话框的转换数据类型部分。默认情况下,它为false,您可能希望将其设置为true以将它们转换为基本数据类型。例如,如果您的用户数据类型为varchar(11)(即EXEC sp_addtype ssn,'VARCHAR(11)','NOT NULL'),则它将被复制为varchar(11)而不是ssn。

具有预快照脚本的第一个选项可通过“发布属性” - >“快照”访问。我假设您需要在那里提供一个脚本,该脚本将检查订阅者中是否存在给定的用户定义类型然后创建它,否则跳过:

enter image description here

第二个建议的解决方案可通过单个文章属性访问:

enter image description here

看,如果以上内容可以帮助您解决问题。当然,还有一种解决方案可以在订户处手动创建缺少的UDT。

© www.soinside.com 2019 - 2024. All rights reserved.