I am setting up a test merge replication scenario between two servers. The
servers are not in the same domain and the domains are not trusted. I have
managed work arounds and got the snapshots to work by using the same user
name and service account for Sql Agent. The setup is such that one machine
acts as the publisher/distributor and the other machine is the subscriber.

I got the initial snapshot from the publisher/distributor to subscriber.
There is one snapshot scheduled tasks on the publisher/distributor (run once
every week) and one REPL-merge scheduled task on the subscriber (run once
every 1 hr). The replication is setup so that the subscriber pulls the
subscription. The agent history of the Merge Agent in Replication Monitor
shows an error stating "The process could not deliver snapshot to the
subscriber". Error details shows two errors:

1. Cannot insert duplicate key row in object 'sysmergeschemachange' with
unique index 'schemachangeversion'.
2. RAISERROR failed due to invalid parameter substitution(s) for error
20001, severity 16, state 1.

These errors comes up every hour so I assume that the REPL-merge scheduled
task is trying to kick off a snapshot task since it is the only job
scheduled to run every hour. The REPL-merge scheduled task on the subscriber
has the following switch:

-Publisher VIPERPDC -PublisherDB [Viper16copy] -Publication
[Viper16copy] -Subscriber [VIPERTEST] -SubscriberDB [test
rep] -SubscriptionType 1 -SubscriberSecurityMode 1 -Distributor VIPERPDC

The snapshot as I understand is only supposed to run once to get the initial
schema and data. If it is in here that the snapshot task is kicked off, does
anyone know where it is? If not where do you think this happened thus
generating the error every hour?

Thanks!
Ralph Ninh