我为某些表设置了事务复制。 主站和从站数据库完全相同。 我使用了这个查询并比较了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)
数据类型是“真实的”
也许这不是问题,但这是我能找到的唯一奇怪的事情。
答案 0 :(得分:0)
我发现了我的问题。 实际上这个4,24399158193054E-314的实际值是“0”,问题是它没有使用“。”。但是“,”作为小数分隔符,因此程序的调用有太多的争论。
我所做的是将插入,更新,删除的语句传递从“调用”更改为INSERT / UPDATE / DELETE语句。
我不知道为什么默认情况下没有选择它,但现在它可以正常工作。