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语句
我不知道为什么这不是默认选择,但现在它的工作