【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

时间:2023-03-09 13:23:56
【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

1.首先新建一个空的数据库 CreditTest,里面没有任何表结构,视图,数据等。

2.在已连接的服务器的下方找到“复制”选项,然后兴建发布:

...(新建发布成功)

...(新建订阅成功)

3.问题出现了:

问题1: 数据在同步的时候,出现错误。如图。

【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

解决方案:经过 在发布数据库中 查找该视图 发现,该视图 没有被使用过,并且 里面包含了 发布数据库上 不存在的 数据表,所以导致 发布数据库 往 订阅库 同步 视图的时候 出错,导致了后期其他的 视图 以及大容量 数据 同步的失败。

经过从 发布数据库 删除该视图,同步顺利进行。

【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

问题2:

【原创】记一次Sql2008R2的数据库订阅发布遇到的问题!

尝试的命令:
CREATE VIEW [dbo].[V_Report_Dim_Applay] AS
with app as (
select WorkflowId,max(CreationTime) mi
from dbo.WorkflowStep
where SubmitStatus=1 and StepName in ('提交审核','等待信用报告')
group by WorkflowId) ,tmp as (SELECT a.ApplayCode,a.SaleCompanyInfoID CompanyInfoID,a.ProductInfoID
,dep.Name SaleDepartment
,sa.ID SaleUserID
-- ,u.FriendlyName + '/' + c.CustomerCommissionerID AS SaleUser
,case when wf.CurrentStep in (''初审中','等待初审')
(事务序列号: 0x00018A69000039B3004D00000000,命令 ID: 1095) 错误消息:
由于被引用对象或列在订阅服务器上不存在,因此无法复制视图或函数。 (源: MSSQL_REPL,错误号: MSSQL_REPL20164)
获取帮助: http://help/MSSQL_REPL20164
对象名 'dbo.t_SaleUser' 无效。 (源: MSSQLServer,错误号: 208)
获取帮助: http://help/208
由于被引用对象或列在订阅服务器上不存在,因此无法复制视图或函数。 (源: MSSQL_REPL,错误号: MSSQL_REPL2759)
获取帮助: http://help/MSSQL_REPL2759

 原因是:

dbo.t_SaleUser表由于没有主键所以未创建,需要手动进行该表的创建。
问题即可解决。

注意:此表的 数据为空,未复制过来。