Friday, March 23, 2012
Is this merge replica model possible?
I have this model in mind. That is presented below.
I am presenting 2 scenarios. Day 1 to day 7, cover scenario 1, and Day
9 covers scenario 2.
Day 1.
A user subscribes and downloads subscription X. The user works -off
line- on his locally cached data
Day 5
The same user decides that he wants to update the local subscription he
has got from day 1. Without having to (check-in) synchronize with the
server. Just pure update of the locally cached (data) subscription. You
can assume for simplicity the delta will cause no collisions with the
locally cached data.
Day 7.
The same user is happy with his work, so he synchronizes (merges) back
with the server. Assume all collisions (if any or no collisions at all)
are resolved.
Day 9.
The same user decides to work again. So he re-initialize with the
server. Can we be selective, say the server - based on history-
figures that the user has pretty much 90% of all the data he needs and
instead of downloading a fresh version, it downloads a delta instead.
You may ask why is that?
Ok, What we have is a huge replica, say in 100,000+++ records. And our
users can be connecting using modems. We don't want to waste time
downloading that amount when all changes that occur were the addition
of 1000 records to the database. So basically, if I downloaded on Day 1
100,000 record and on day 9, the replica would have included 100,1000
records - assume no collision for simplicity-. All I want is those 1000
records added to my 100,000 that are locally cached from Day 1.
Q1:
Is this model a total variant from the normal Merge Replica model?
Q2:
Is this model possible - built-in or by programming functionality it
does not really matter.
Q3:
Can one download a delta (new records added to the database) to the
local copy of the cached subscription from the server?
Q4:
Can we have a subscription that does not expire after synchronization
(merging) with the server?
Q5:
What kind of data transfers can I utilize to expedite the replica
transfer? My data is all ASCII. Can we compress the replica?
Q6:
Can we encrypt the replica after compression?
Please be techinically specific if at all possible.
Thank you sincerely so very much! .
I'm confused. He goes offline, makes changes, syncs on day 7, on day 9 he
syncs, and you want him to just receive the changes which occurred between
day 7 and day 9? This is precisely what happens. You can filter so he only
gets the data he needs.
1) this is the plain vanilla merge model - unless I am missing something.
2) you don't need to do any programming for this, just configure the
subscription
3) sure. Perhaps you might want to configure the ExchangeType 2 (which is
Download Only) to only the transactions which occurred on the publisher flow
to the subscriber. Right click on the merge agent, select agent properties,
Steps, Run Agent, Edit, and at the end of the command section hit space, and
then type -ExchangeType 2
Then accept all defaults and restart your agent.
4) No.
5) use the concurrent snapshot option
6) No, use the encrypted file system for this.
Hilary Cotter
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
"lottoman" <lottoman2000@.gmail.com> wrote in message
news:1116348862.558557.136770@.g14g2000cwa.googlegr oups.com...
> Hello All,
> I have this model in mind. That is presented below.
> I am presenting 2 scenarios. Day 1 to day 7, cover scenario 1, and Day
> 9 covers scenario 2.
>
> Day 1.
> A user subscribes and downloads subscription X. The user works -off
> line- on his locally cached data
> Day 5
> The same user decides that he wants to update the local subscription he
> has got from day 1. Without having to (check-in) synchronize with the
> server. Just pure update of the locally cached (data) subscription. You
> can assume for simplicity the delta will cause no collisions with the
> locally cached data.
> Day 7.
> The same user is happy with his work, so he synchronizes (merges) back
> with the server. Assume all collisions (if any or no collisions at all)
> are resolved.
> Day 9.
> The same user decides to work again. So he re-initialize with the
> server. Can we be selective, say the server - based on history-
> figures that the user has pretty much 90% of all the data he needs and
> instead of downloading a fresh version, it downloads a delta instead.
> You may ask why is that?
> Ok, What we have is a huge replica, say in 100,000+++ records. And our
> users can be connecting using modems. We don't want to waste time
> downloading that amount when all changes that occur were the addition
> of 1000 records to the database. So basically, if I downloaded on Day 1
> 100,000 record and on day 9, the replica would have included 100,1000
> records - assume no collision for simplicity-. All I want is those 1000
> records added to my 100,000 that are locally cached from Day 1.
> Q1:
> Is this model a total variant from the normal Merge Replica model?
> Q2:
> Is this model possible - built-in or by programming functionality it
> does not really matter.
> Q3:
> Can one download a delta (new records added to the database) to the
> local copy of the cached subscription from the server?
> Q4:
> Can we have a subscription that does not expire after synchronization
> (merging) with the server?
> Q5:
> What kind of data transfers can I utilize to expedite the replica
> transfer? My data is all ASCII. Can we compress the replica?
> Q6:
> Can we encrypt the replica after compression?
> Please be techinically specific if at all possible.
> Thank you sincerely so very much! .
>
|||Hilary Cotter wrote:
> I'm confused. He goes offline, makes changes, syncs on day 7, on day
9 he
> syncs, and you want him to just receive the changes which occurred
between
> day 7 and day 9? This is precisely what happens. You can filter so he
only
> gets the data he needs.
> 1) this is the plain vanilla merge model - unless I am missing
something.
> 2) you don't need to do any programming for this, just configure the
> subscription
> 3) sure. Perhaps you might want to configure the ExchangeType 2
(which is
> Download Only) to only the transactions which occurred on the
publisher flow
> to the subscriber. Right click on the merge agent, select agent
properties,
> Steps, Run Agent, Edit, and at the end of the command section hit
space, and
> then type -ExchangeType 2
> Then accept all defaults and restart your agent.
> 4) No.
> 5) use the concurrent snapshot option
> 6) No, use the encrypted file system for this.
> --
> Hilary Cotter
> Looking for a SQL Server replication book?
> http://www.nwsu.com/0974973602.html
> Looking for a FAQ on Indexing Services/SQL FTS
> http://www.indexserverfaq.com
1- Let me ask the same question (Q1) with better wording
Can i download a replica on day 1 and then on day 7 download the delta
to that replica?
Delta is the new records added to the server (from day 1 to day 7)
after i dowload the replica. On day I download 1000 record. From d1 to
d7, the server recieved 10 new records. on day 7, i want to download
those 10 record only and add them to my replica. you cam assume no
collision.
Thank you
|||I'm still confused. Perhaps I am too easily confused.
I think this is what you want.
Day 1, download replica, go offline
In the meantime 10 records are added to the publisher.
Day 7 - sync.
With the exchange type of download only, those 10 records which were added
to the publisher will move from the publisher to the subscriber. Any changes
which occurred on the subscriber will remain there.
With an exchange type of upload only, those 10 records which were changed on
the publisher will remain on the publisher; any changes originating on the
subscriber will move to the publisher.
Hilary Cotter
Looking for a SQL Server replication book?
http://www.nwsu.com/0974973602.html
Looking for a FAQ on Indexing Services/SQL FTS
http://www.indexserverfaq.com
"lottoman" <lottoman2000@.gmail.com> wrote in message
news:1116601584.882308.67430@.f14g2000cwb.googlegro ups.com...
> Hilary Cotter wrote:
> 9 he
> between
> only
> something.
> (which is
> publisher flow
> properties,
> space, and
> 1- Let me ask the same question (Q1) with better wording
> Can i download a replica on day 1 and then on day 7 download the delta
> to that replica?
> Delta is the new records added to the server (from day 1 to day 7)
> after i dowload the replica. On day I download 1000 record. From d1 to
> d7, the server recieved 10 new records. on day 7, i want to download
> those 10 record only and add them to my replica. you cam assume no
> collision.
> Thank you
>
Monday, March 12, 2012
Is there merge monitor sample in vb.net?
Hello,
We are a vb.net shop and while some of us know a little C# it's not enough. Is there a sample solution for the monitoring of replication in vb.net? I know about the sales one but it's in c#. Thanks.
Please refer to the Books On line link
ms-help://MS.SQLCC.v9/MS.SQLSVR.v9.en/repref9/html/b323da02-fadf-443c-8ba7-0cc050250e2d.htm
which will point to every replication step through RMO programming and sample code is written in VB, C#, C++, J#, etc.
Thanks
|||
Yunjing,
Thanks for the response. Unfortunetly I am rather new to raiseevents. Is there a way someone could convert this to vb.net so I can try and understand it? I am basically looking for a progress bar and text output during the sync progress in vb.net as the SalesOrder sample does in c#. Here is what I have in vb.net but am not sure if it's correct. I also have an error when trying to call the agent.status. I got snippets from the salesorder sample c# solution
Public Delegate Sub SyncWhenConnectedStatus(ByVal sender As Object, ByVal eventArgs As StatusEventArgs)
Public Event Status As SyncWhenConnectedStatus
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
...other code...
Dim subscription As MergePullSubscription
Dim agent As MergeSynchronizationAgent
...other code...
agent.Status += New AgentCore.StatusEventHandler(AddressOf Sync_Status)
**cannot build
**Error 1 'Public Event Status(sender As Object, e As Microsoft.SqlServer.Replication.StatusEventArgs)' is an event, and cannot be called Directly. Use a 'RaiseEvent' statement to raise an event.
agent.Synchronize()
end sub
**Not sure if I am doing this correct either
Private Sub Sync_Status(ByVal sender As Object, ByVal e As StatusEventArgs)
' Update the Synchronization Status form.
txtOutput.AppendText(e.Message.ToString() + Environment.NewLine)
' Call the Status event to update the main form
' if sync when connected is used.
RaiseEvent Status(sender, e)
'If Not Status Is Nothing Then
' RaiseEvent Status(sender, e)
'End If
Application.DoEvents()
End Sub