【问题标题】:SQL Server Transactional Replication - Error number: 213 - Column name or number of supplied values does not match table definitionSQL Server 事务复制 - 错误号:213 - 列名或提供的值数与表定义不匹配
【发布时间】:2021-05-23 05:27:57
【问题描述】:

我遇到了事务复制问题,我正在努力解决。

这是错误:

列名或提供的值数与表定义不匹配。 (来源:SQL Server,错误号:213)

在将文章交付给订阅者时,INSERT 语句中出现错误。所有浮点列似乎都发生了错误

插入 [dbo].[Table] ( [id],[Client_No],[Loan_No],[Client_Name],[Loan_Amt],[Loan_Balance],[Loan_Int_Paid],[Loan_lsinst],[PartAmt],[InstNoPaid],[CentreId],[GroupId],[Loan_Dt ],[finChrg],[Loan_Stat],[FirstInstDt],[Loan_Int],[Loan_Prd],[Loan_DueDt],[Loan_Inst],[Loan_Typ],[IRR],[FlatRate],[ROCode],[ROCodeOrg], [Loan_pen],[Loan_penpaid],[loan_Oc],[Loan_Ocpaid],[Loan_legal],[WOff],[WOffDt],[Reschedule],[Loan_Suggest],[Loan_Leg_Rem],[loan_woff_rem],[loan_sector],[loan_use ],[Loan_ClDt],[Brn_Code],[备注],[I nsureAmt],[ProcessFee],[sTax],[trn_autNo],[LastPaidOn],[Loan_Cat],[Cycle],[invoiceNo],[BuyOutDt],[BuyOutBnk],[BuyOutFlg],[ResponseDt],[EndLoanUtil] ,[Util_Empno],[InsurComp],[CoolDys],[Collday],[ColWeek],[NetDisbFlg],[ML_ClAmt],[LastPaidAmt],[WoffBO],[WoffBODt],[LastEMI],[DisbBank],[ NextDueDt],[ArrearNos],[DisbTyp],[GL_Fdgl],[GAN],[Bank_Id],[Nominee_Id],[IsAndroid],[Created_On],[Created_By],[Updated_On],[Updated_By],[Doc_Download] ,[Lot_Time],[CollMode],[Ref_LoanNo],[Sanction_dt],[GenInsu],[NatCatInsr],[Mast erLoanUtil],[NachStatus],[NatCatInsrFlg],[SoftCopyStatus],[PennyDrop],[EximId],[Mort_Int],[InterestPaidUpto],[MortInsAmt]) 值(6494935,1002460000002934,1102460201145852,N'AKASH DINI',2.800000000000000e+004,2.800000000000000e+004,0.000000000000000e+000,NULL,0,0,306076,331912,{ ts '2021-02-20 13:08:07.720'},0.000000000000000e+000,145,{ts '2021-02-20 13:08:07.720'},2.500000000000000e+001,104,{ts '2021-02-20 13:08:07.720'},0.000000000000000e+000,2,0.000000000000000e+000,NULL,'MM730',NULL, 0.000000000000000e+000,0.000000000000000e+000,0.000000000000000e+000,0.000000000000000e+000,NULL,NULL,NULL,'N',NULL,NULL,NULL,NULL,NULL,NULL,246,NULL,00,0000000 +000,0.000000000000000e+000,NULL,NULL,48,1,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,'TUE',0,NULL,0.000000000000000e+000,0,NULL ,NULL,NULL,NULL,NULL,0,NULL,NULL,NULL,NULL,NULL,1,{ts '2021-02-20 13:08:07.720'},'MM166',NULL,NULL,0,NULL,'W',NULL,NULL,NULL,NULL,NULL,N'N',NULL,NULL,NULL,NULL,NULL,NULL ,NULL)

不确定为什么 INSERT 语句浮点值以显示格式出现,而不是正常值。由于这个原因,订阅者的分发者似乎失败了。

我该如何解决这个问题?

【问题讨论】:

  • 复制设置后是否有人更改了发布服务器中的表架构?

标签: sql-server subscription transactional-replication


【解决方案1】:

如果您复制代码并粘贴到 SSMS 上,您可以获取行号并进行计数,这样您就可以知道出现错误的原因。 因此,我认为您应该在 SSMS 上使用。右键单击要插入的表,将表编写为->插入到->新建查询编辑器窗口

另外,如果您使用静态类型语言,您必须将代码的数据类型转换为编程语言中的 sql 数据类型才能与 sql 交换数据。

InsertColumnCount 值计数 93 91

  insert into [dbo].[Table] ( 
    [id],
    [Client_No],
    [Loan_No],
    [Client_Name],
    [Loan_Amt],
    [Loan_Balance],
    [Loan_Int_Paid],
    [Loan_lsinst],
    [PartAmt],
    [InstNoPaid],
    [CentreId],
    [GroupId],
    [Loan_Dt],
    [finChrg],
    [Loan_Stat],
    [FirstInstDt],
    [Loan_Int],
    [Loan_Prd],
    [Loan_DueDt],
    [Loan_Inst],
    [Loan_Typ],
    [IRR],
    [FlatRate],
    [ROCode],
    [ROCodeOrg],
    [Loan_pen],
    [Loan_penpaid],
    [loan_Oc],
    [Loan_Ocpaid],
    [Loan_legal],
    [WOff],
    [WOffDt],
    [Reschedule],
    [Loan_Suggest],
    [Loan_Leg_Rem],
    [loan_woff_rem],
    [loan_sector],
    [loan_use],
    [Loan_ClDt],
    [Brn_Code],
    [Remarks],
    [I nsureAmt],
    [ProcessFee],
    [sTax],
    [trn_autNo],
    [LastPaidOn],
    [Loan_Cat],
    [Cycle],
    [invoiceNo],
    [BuyOutDt],
    [BuyOutBnk],
    [BuyOutFlg],
    [ResponseDt],
    [EndLoanUtil],
    [Util_Empno],
    [InsurComp],
    [CoolDys],
    [Collday],
    [CollWeek],
    [NetDisbFlg],
    [ML_ClAmt],
    [LastPaidAmt],
    [WoffBO],
    [WoffBODt],
    [LastEMI],
    [DisbBank],
    [NextDueDt],
    [ArrearNos],
    [DisbTyp],
    [GL_Fdgl],
    [GAN],
    [Bank_Id],
    [Nominee_Id],
    [IsAndroid],
    [Created_On],
    [Created_By],
    [Updated_On],
    [Updated_By],
    [Doc_Download],
    [Lot_Time],
    [CollMode],
    [Ref_LoanNo],
    [Sanction_dt],
    [GenInsu],
    [NatCatInsr],
    [MasterLoanUtil],
    [NachStatus],
    [NatCatInsrFlg],
    [SoftCopyStatus],
    [PennyDrop],
    [EximId],
    [Mort_Int],
    [InterestPaidUpto],
    [MortInsAmt]) 
    values ( 
    6494935,
    1002460000002934,
    1102460201145852,
    N'AKASH DINI',
    2.800000000000000e+004,
    2.800000000000000e+004,
    0.000000000000000e+000,
    NULL,
    0,
    0,
    306076,
    331912,
    {ts '2021-02-20 13:08:07.720'},
    0.000000000000000e+000,145,
    {ts '2021-02-20 13:08:07.720'},
    2.500000000000000e+001,104,
    {ts '2021-02-20 13:08:07.720'},
    0.000000000000000e+000
    ,2
    ,0.000000000000000e+000,
    NULL,
    'MM730',
    NULL,
    0.000000000000000e+000,
    0.000000000000000e+000,
    0.000000000000000e+000,
    0.000000000000000e+000,
    NULL,
    NULL,
    NULL,
    'N',
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    246,
    NULL,
    0,
    0.000000000000000e+000,
    0.000000000000000e+000,
    NULL,
    NULL,
    48,
    1,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    0,
    'TUE',
    0,
    NULL,
    0.000000000000000e+000,
    0,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    0,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    1,
    {ts '2021-02-20 13:08:07.720'},
    'MM166',
    NULL,
    NULL,
    0,
    NULL,
    'W',
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    N'N',
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL,
    NULL)
    
    select (95-2) as InsertColumnCount,(188-97) as ValueCount

【讨论】:

  • 感谢 Omer 的耐心等待。此查询实际上来自发布服务器,用于复制到订阅服务器。当我删除第一列(这是一个 IDENTITY 列)时,查询在 SSMS 中完美运行。我没有在此特定表的发布者数据库上将 FOR REPLICATION 设置为 TRUE,因为我希望订阅者上的 IDENTITY 值相同。我做得对吗?
猜你喜欢
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-28
  • 2017-08-23
相关资源
最近更新 更多