cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

SQL Remote Rollback

JimDiaz
Participant
0 Likes
1,961

Using SQL Anywhere 17.0.11.7058. We have a single consolidated with SQL Remote replication to approximately 200 remote users. At least one of these remotes is experiencing rollback’s of some of the data applied by DBRemote.

Translating the consolidated database log file, I can see the following statement is being sent to 3 publications

--PUBLICATION-1030-04103716670382-0025-SUBSCRIBE
--PUBLICATION-1030-04103716670382-0027-SUBSCRIBE
--PUBLICATION-1030-04103716670382-0030-SUBSCRIBE
--INSERT-1030-04103716670382
INSERT INTO ECO.AddressesEmail(EmailAddressId,DomainName,LocalAddress,
      FullAddress,RecordActive,RecordInserted,RecordUpdated,RecordReceived)
VALUES(450115,'xxx.xxx.xxx','xxxx.x.xxxx.xxx','xxxx.x.xxx.xxx@xxx.xxx.xxx',1,'2022-08-15 10:13:30.469','2022-08-15 10:13:30.469','2022-08-15 10:13:30.469001')
go
--REMOTE-1030-04103716670502-0930-RECEIVED-NA-06943578838
--COMMIT-1030-04103716670518-2022-08-15 12:15:36.993
COMMIT WORK
go

In a remote database where this information is missing I see the following in the translated log file

--PUBLICATION-1007-03057924498607-0025-SUBSCRIBE
--INSERT-1007-03057924498607
INSERT INTO ECO.AddressesEmail(EmailAddressId,DomainName,LocalAddress,
      FullAddress,RecordActive,RecordInserted,RecordUpdated,RecordReceived)
VALUES (450115,'xxx.xxx.xxx','xxxx.x.xxxx.xxx','xxxx.x.xxx.xxx@xxx.xxx.xxx',1,'2022-08-15 10:13:30.469','2022-08-15 10:13:30.469','2022-08-15 10:13:30.469001')
go
--REMOTE-1007-03057924498725-0101-RECEIVED-NA-04103716670529
--ROLLBACK-1007-03057924498779
ROLLBACK WORK
go

Any information on why this might be happening would be appreciated.

Accepted Solutions (0)

Answers (2)

Answers (2)

regdomaratzki
Product and Topic Expert
Product and Topic Expert

The simple and direct answer to your original question appears to be :

When dbremote was trying insert a row into the ECO.AddressesEmail table, there was a foreign key defined on this table that referred to another table, and the parent record in that other table was missing, so the insert failed and was rolled back.

As Volker mentions, you can use PASSTHROUGH ONLY (or a re-extract) to try and address the missing data, but the real question IMHO is why was the parent record not in the remote database?

Reg

VolkerBarth
Contributor
0 Likes

Well, the errors related to missing PK rows explains the rollback itself. I do not know whether the WAIT_FOR_COMMIT option might make a difference here (in case the missing PK rows would be inserted later, but in the same transaction, and in case the option might be set ON in the cons and OFF in the according remote – and additionally, the DBEMOTE -g option might or might make a difference here when grouping transactions).

If the according rows really are missing in the remote, you might be able to

  • add those via PASSTHROUGH ONLY mode for that remote (something I would recommend to thoroughly test before!),
  • or need to re-extract that particular remote...