加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

【OGG】SqlServer同步源端增加trandata报错解决

发布时间:2020-12-12 13:05:00 所属栏目:MsSql教程 来源:网络整理
导读:好久没有更新博客,最近整理整理最近碰到的问题。 ? Sqlserver 2008 使用 ogg 进行数据同步,在添加 trandata 时报错,添加 trandata 失败,报错如下: 2016-03-28 13:45:14 ?WARNING OGG-00552 ?Database operation failed: SQLExecDirect error: EXECUTE s

好久没有更新博客,最近整理整理最近碰到的问题。

?

Sqlserver 2008使用ogg进行数据同步,在添加trandata时报错,添加trandata失败,报错如下:

2016-03-28 13:45:14 ?WARNING OGG-00552 ?Database operation failed: SQLExecDirect error:

EXECUTE sys.sp_cdc_enable_db

if 0 = (select st.is_tracked_by_cdc from sys.tables as st where st.object_id = object_id(N'[dbo].[cdrsync]'))

???AND 0 = (select st.is_replicated from sys.tables as st where st.object_id = object_id(N'[dbo].[cdrsync]'))

BEGIN

DECLARE @capture_instance sysname = N'OracleGG_' + cast(object_id(N'[dbo].[cdrsync]') as sysname)

CREATE TABLE #ggsTabKeys (db sysname,name sysname,owner sysname,column_name sysname,key_seq int,pk_name sysname)

INSERT INTO #ggsTabKeys EXEC sp_pkeys 'cdrsync','dbo'

IF 0 = (SELECT COUNT(*) FROM #ggsTabKeys)

????INSERT INTO #ggsTabKeys

????SELECT TOP (1) DB_NAME(),'',name,1,'' FROM sys.columns sc

????WHERE sc.object_id = OBJECT_ID(N'[dbo].[cdrsync]')

????AND is_computed = 0

????AND max_length > 0

????ORDER BY max_length

END

IF 0 = (select COUNT(*) from #ggsTabKeys)

DECLARE @cols NVARCHAR(max)

SELECT ?@cols =

REPLACE(REPLACE(REPLACE(

STUFF(( SELECT

?????????',' + QUOTENAME( t.column_name)

????????FROM ???#ggsTabKeys AS t

????????FOR XML PATH('')

???????),'')

???????,'<','<'),'>','>'),'&','&')

execute sys.sp_cdc_enable_table

????@source_schema = N'dbo'

??,@source_name = N'cdrsync'

IF EXISTS(SELECT OBJECT_ID('tempdb..#ggsTabKeys'))

??DROP TABLE #ggsTabKeys

end

?

消息 22832,级别 16,状态 1,过程 sp_cdc_enable_table_internal,第 623

无法更新元数据来指示已对表 [dbo].[cdrsync] 启用了变更数据捕获。执行命令 '[sys].[sp_cdc_add_job] @job_type = N'capture'' 时失败。返回的错误为 22836: '无法更新数据库 CDRTEST 的元数据来指示已添加某变更数据捕获作业。执行命令 'sp_add_jobstep_internal' 时失败。返回的错误为 14234: '指定的 '@server' 无效(有效值由 sp_helpserver 返回)'。请使用此操作和错误来确定失败的原因并重新提交请求。'。请使用此操作和错误来确定失败的原因并重新提交请求。

?

原因:SqlServer安装后修改了主机名,导致以下两个语句结果不一致

SELECT * FROM master.dbo.sysservers

SELECT SERVERPROPERTY('ServerName')

?

修复方法:

IF serverproperty('servername')<>@@servername ???

??BEGIN ?

??DECLARE ?@server SYSNAME ?

??SET ??@server=@@servername ?????

??EXEC ?sp_dropserver @server=@server ???

??SET ??@server=cast(serverproperty('servername') AS SYSNAME) ??

??EXEC ?sp_addserver @server=@server,@local='LOCAL' ????

??END ?

??ELSE ?

????PRINT '实例名与主机名一致,无需修改!'?

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读