【OGG】SqlServer同步源端增加trandata报错解决
好久没有更新博客,最近整理整理最近碰到的问题。 ? 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 '实例名与主机名一致,无需修改!'? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |