事务复制:列名或提供的值数与表定义不匹配

时间:2014-03-07 08:49:06

标签: sql-server-2008-r2 replication

我为某些表设置了事务复制。 主站和从站数据库完全相同。 我使用了这个查询并比较了master和slave的结果,以确保表是相同的

select * from sys.columns c
join sys.tables t on t.object_id = c.object_id
where t.name = 'customers'

在复制监视器中,我可以找到以下错误: 列名或提供的值数与表定义不匹配。

如果我查看详细信息,我会得到: 尝试命令:

if @@trancount > 0 rollback tran
(Transaction sequence number: 0x0011775200000105007600000000, Command ID: 1)

所以我使用此查询检查了detribution数据库,以找到失败的命令。

sp_browsereplcmds @xact_seqno_start = '0x0011775200000105007600000000',
@xact_seqno_end = '0x0011775200000105007600000000'

这是命令(在该表的2行中):

{CALL [sp_MSins_dboCustomers] (0,'575',N'todelete','575',N'todelete',118594,118595,118596,N'10T 3% Sk 30T net.',0,'Deutschland',4,24399158193054E-314,4,24399158193054E-314,4,24399158193054E-314,4,24399158193054E-314,2,54639494915833E-313,'','','','','','TGW',N'Liefern LKW',NULL,NULL,0,0,6,79038653108887E-311,NULL,'',0,NULL,NULL,NULL,0,0,0,-1,-1,1900-01-01 00:00:00,0,1,{AEB3D911-36D1-4A8A-B713-6B2F2CCA1641},0,0,2,'de-AT',25,NULL,NULL,0,1,NULL,NULL,2014-03-07 08:57:45.727,-1,NULL,0,'','','','','','','','','','','','',

'', '', '', '', '', '', '', '')}

这就是我在数据库中的内容

TypeID  CustomerID  Name    SiteID  SiteName    AddressID   BillAddressID   ShipAddressID   Terms   TaxExempt   TaxSchedID  TaxPercent  TaxPercent1 TaxPercent2 TaxPercent3 TaxPercent4 TaxTitle    TaxTitle1   TaxTitle2   TaxTitle3   TaxTitle4   LocationID  ShipVia PackingType PackingNoteID   CutoffDay   UploadAction    LeadTime    ExpDays Notes   SalesPersonID   CreditLimit OpenOrders  OrderValueScheduleID    OAHidePrices    DefaultAckType  DefaultInvType  DefaultPackType UploadEmployee  UploadDateTime  OAHideImages    MfgCustomer CustomerGUID    PricingMethod   DefaultCustomer EngineeringUnitSetID    CurrencyCulture FamilyGroupID   InvoiceMinimum  InvoiceSurcharge    InvoiceGroup    InvoiceCopies   DeliveryMinimum DeliverySurcharge   CreateDate  EnteredBy   LanguageCulture DropShip    UserDef1    UserDef2    UserDef3    UserDef4    UserDef5    UserDef6    UserDef7    UserDef8    UserDef9    UserDef10   UserDef11   UserDef12   UserDef13   UserDef14   UserDef15   UserDef16   UserDef17   UserDef18   UserDef19   UserDef20
0   575 todelete    575 todelete    118594  118595  118596  10T 3% Sk 30T net.  0   Deutschland 0   0   0   0   0                       TGW Liefern LKW NULL    NULL    0   0   0   NULL        302 NULL    NULL    NULL    0   0   0   -1  -1  1900-01-01 00:00:00 0   1   AEB3D911-36D1-4A8A-B713-6B2F2CCA1641    0   0   2   de-AT   25  NULL    NULL    0   1   NULL    NULL    2014-03-07 08:57:45.727 -1  NULL    0   1   2   3   4                                                                   0   1   2   3   4                                                               

正如你在这里看到的,taxpercent字段的值(在“Deutschland”之后)在我的数据库中是0,在命令中它们真的很奇怪(4,24399158193054E-314)

数据类型是“真实的”

也许这不是问题,但这是我能找到的唯一奇怪的事情。

1 个答案:

答案 0 :(得分:0)

我发现了我的问题。 实际上这个4,24399158193054E-314的实际值是“0”,问题是它没有使用“。”。但是“,”作为小数分隔符,因此程序的调用有太多的争论。

我所做的是将插入,更新,删除的语句传递从“调用”更改为INSERT / UPDATE / DELETE语句。

我不知道为什么默认情况下没有选择它,但现在它可以正常工作。