on 2017 May 08 7:51 AM
Hi, I am using sql remote for replicating between two distanced databases, where for some reason the replication is not succeeding anymore, and the Consolidated DB argues <missing message="" from="" remote="" db="">. Question: is there any way to enforce the Remote DB to jump back in transaction log files, and send older messages again to the Consolidated? So far as I know, if I could change the field 'log_send' in table SYSREMOTEUSERS in Remote then I will have what I want.
Could you please tell me whethere there is any procedure that could edit the table SYSREMOTEUSERS?
Thanks in advance
Request clarification before answering.
To answer your original question: There is a builtin tool to adapt the contents of SYSREMOTEUSER (and there are a few questions here dealing with that) but AFAIK, it's generally "left as an exercise to the reader to look for that", in order to make sure one only does use that when the particular situation and the consequences are fully understood. - Yes, I'm intentionally vague here.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Finally I could figure out the reason for the error. It was our own mistake: the message length (option -l) was not the same on consolidate and remote 😞
As a result, not identical message length on both sides can work sometimes (as long as the generated message is shorter than the value specified in -l).
Thanks and sorry for the inconvinience
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Thanks for posting the resolution... you won't be the last person needing the answer.
In this scenario, dbremote with no verbosity should either report "Message too large" or "Deleting corrupt message". I believe the warning message will vary based on whether the compressed data is less than or greater than the maximum allowed message size on the receiving end.
Reg
I. 2017-05-23 15:14:09. SQL Remote Message Agent Version 16.0.0.2438 I. 2017-05-23 15:14:09. Copyright stuff removed I. 2017-05-23 15:14:09. W. 2017-05-23 15:14:10. Message too large W. 2017-05-23 15:14:10. Message too large W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Message too large W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Deleting corrupt message W. 2017-05-23 15:14:10. Message too large W. 2017-05-23 15:14:10. Message too large I. 2017-05-23 15:14:10. Scanning logs starting at offset 0000693858 I. 2017-05-23 15:14:10. Transaction log "C:/170523_dbremote_toolong/cons/cons.log" starts at offset 0000672740 I. 2017-05-23 15:14:10. Processing transaction logs from directory "C:/170523_dbremote_toolong/cons/" I. 2017-05-23 15:14:10. Processing transactions from active transaction log I. 2017-05-23 15:14:11. Execution completed
Actually in my case I didn't receive in the verbose log anything indicating that the message is too long! Should I understand that the errors/warnings in the output file of dbremote should be: Either - Deleting corrupt message: when the subscriber is receiving messages that are shorter than expected. OR - Message too loarge: when the subscriber is receiving messages that are longer than expected.
How can I see both messages in the above example? is it tooken from the same side?
In my understanding, it depends on the size of the compressed data length of each message file which warning will appear. I guess Reg has used both kinds in his test (a message too long in compressed form and another one only too long after being uncompressed), so both warnings appear. As stated, just my guessing.
This is a run receiving messages that are too large. To be honest, I'm not 100% sure why the message is sometimes "Message too large" and sometimes "Deleting corrupt message". I'd need to investigate further, but IMHO, it's not critical to know exactly why. A warning is printed if dbremote picks up a message that it doesn't recognize as a message.
If you run dbremote with the -o switch, you won't see warnings in the dbremote window, you'll only see them if you look at the generated output log. I suspect that may be why you don't see the messages.
Reg
Actually I have dropped the replication on remote side and created new subscription for this remote on the cons. We have ready written procedures for that. I will still try to simulate similar situations and sure will post the conclusion as soon as I have any.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hint: I turned your comment into an answer. Now you can just click the check mark left of the text to "accept that".
User | Count |
---|---|
52 | |
8 | |
5 | |
5 | |
5 | |
5 | |
5 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.