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

Sql server 2008 r2 事务复制:提供的值的列名或数目与表定义不匹配,sql-server-2008-r2,replication,Sql Server 2008 R2,Replication,我已经为一些表设置了事务复制。 主数据库和从数据库是相同的。 我使用了这个查询,并比较了主查询和从查询的结果,以确保表是相同的 select * from sys.columns c join sys.tables t on t.object_id = c.object_id where t.name = 'customers' 在复制监视器中,我可以找到以下错误: 提供的值的列名或数目与表定义不匹配 如果我查看详细信息,我会得到以下信息: 尝试的命令: if @@trancount >

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

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)
因此,我使用此查询检查了Distribution数据库,以查找失败的命令

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                                                               
正如您在这里看到的,Deutschland后面的taxpercent字段的值在my DB中为0,在命令中它们真的很奇怪424399193054E-314

数据类型是真实的

也许这不是问题所在,但这是我能找到的唯一奇怪的东西。

我发现了我的问题。 事实上,这个424399193054E-314是0的实数值,问题是它没有使用。但是,作为十进制分隔符,因此过程的调用有太多的参数

我所做的是将insert、update、delete的语句传递从调用更改为insert/update/delete语句

我不知道为什么这不是默认选择,但现在它的工作