Push Or Pull Replication
May 29, 2007What is better to use, Push or Pull Replication? What are the advantages and disadvantages?
View 1 RepliesWhat is better to use, Push or Pull Replication? What are the advantages and disadvantages?
View 1 RepliesHiya,
Our current application which uses SQL 2000/CE uses a single Merge publication to populate numerous "read only" tables on the mobile device, and create the schema for a "transactions" table, which will be filled by the mobile device during work, then merged at sync.
Now, the master "transactions" table at the publisher has millions of rows, and the mobile device does not need any of them... so currently we have it "filtering" by a always false clause, so that none of the data is pushed to the client.
The problem with this is that we cannot archive any of the records in the transaction table, as doing so (say, removing 200k rows) would result in the mobile devices (of which there are about 15,000 active in the field) to attempt to reconcile each of those 200k rows when it is next synced, which takes way too long.
Now, what we would like to do is upgrade to SQL 2005/CE 2005, if the new features will allow us a PULL ONLY table in some way? I cannot find how to do this via the wizard, but am sure I am missing something. At least I hope so.
Can anyone give a suggestion?
Thanks!
Dave Borneman
SELECT
P.Publication
,P.Publication_type
,S.Subscriber_ID
,S.Update_Mode
FROM MSPublications P
INNER JOIN MSSubscriptions S
ON P.Publication_ID = S.Publication_ID
give me publication_type=0. So it is transactional replication but how do we know that is pull or push?
I'm trying to replicate two very big databases with about 10 million
of 4000 characters each. The publisher is SQL 2000, subscriber
is SQL 7.0
The subscriber will also perform full text searches.
I'm trying to decide wheter I should use PULL or PUSH.
The publisher is operating on a very low quality/speed internet
connection, where the subscriber is enjoying a T1.
Help, anyone?
Thanks,
-Michael.
Hi to all.
How can we identify that a transactional replication is configured in pull or push subscription..
where we have to check it out.
Hi All,
I have a problem,
I need to copy a large amount of data from one table and insert it into another table.
The design of the destination table is exactly the same as the source table except for the fact that it has one extra field.
Can I copy; in a single SQL statement; all rows in one table (that match given criteria) into another table allowing for the extra field?
Hi, everyone,
View 3 Replies View RelatedAs I understand replication in Sql2K the only difference in push or pull subscriptions is where the agent runs. If I wanted changes in the publisher to be sent to the subscribers immediately after the change then I thought push would be better. But, if I am equally interested in changes made at the subscriber then what should I use? Or does the agent monitor both the publisher and subscriber at the same time?
View 1 Replies View RelatedWhen we sync data using RDA, the logic should be as follows:
1. Create RDA, set isTracked=false
2. if (isTracked) then RDA.Push(<tablename>..);
3.Delete local table
4.RDA.Pull(<Tablename>)
5. Alter <tablename> Alter column <>
6 Set isTracked = True
My question is how can we know the value of isTracked? or we have to separate RDA.Pull and RDA.Push,
Can we just put them together in one function. But how do we know this table isTracked on?
Anyone knows?
James
Hi All,
Can push and pull subscriptions be configured on the publisher/distributer server?
We have server A running SQL Server 2000 configured as Publisher/Distributor and also a Push subscription (transactional replication) to Server B configured as Subscriber.
The idea was to have Server B as backup server if Server A goes down. Users will continue to update data in server B till server A is up.
Once server A is up, I want to synchronise the up-to-minuit date from Server B to Server A in the form of Transactional replication configured as "Pull Subscription" from Server A.
Is that possible?
Thanks
Sri
In ADS Wizard's Log, it shows me "Pushing data to Access database"
but the Access database in my Desktop PC does not receive the data "pushed" from the "Device".
In the reverse direction, If I "Pull" data from Desktop PC's Access Database, it works.
Why? Any suggestion?
I already repeat this many times but the result are the same.
I did not turn on Windows firewall and Kaspersky internet security at all.
Thank you
I am using merge replication with a push subscription type. I am wondering if the updates of the tables on the subscriber side are push to the publisher from the subscriber or pulled from the subscriber by the publisher when the syncronisation takes place. this makes a big diferrence for me and i can't find the answer to this question anywhere...
if anyone could answer it would be really appreciated
Thanks
Hi all,
I was wondering if someone could suggest a solution to my problem:
I have an in-house production database. I wanted to use Merge replication (push) to mirror parts of this data to our Internet server on the web which has a Public IP.
Steps I followed
1. Created an entry in €œC:WINNTsystem32driversetchosts€? file with IP
address of the Subscriber and just the €œServername€? of the Subscriber on
publisher machine (local server)
2. Created an Alias to the Subscriber
3. Connected to the remote server thru Mgt Studio
4. Created Merge Replication on the Local Database
5. Created Subscription to the remote server.
6. Started the Replication Agent
I receive following msg "The process could not connect to Subscriber 'ISVR'.
When I check the View Synchronization Status in Mgt studio it shows "The server 'ISVR' is not a Subscriber"
I presume that if we have a Public IP at our end, then the Merge Replication will be thru.
Is it possible to replicate without having a Public IP?
Any suggestions,
Thanks.
Hi
We're having problems with push replication to multihomed clients. if the DNS contains multiple IP's and one of those are not reachable from the sql server. the replication fails. no matter order of IP adresses. i wrote a DNS proxy which re-ordered the IP's so that the "working" IP would come first in the list but no success until i filtered out so that the DNS proxy only replied with one, the working, IP.
the replication is part of a commercial application which we have no control over. are there any settings on the server side that can help here? I really want to fix the source of the problem and not patch it with a proxy.
any ideas are welcome. the server is sql 2005 standard and the clients are running 2005 express
Rgds
I have a Merge publication that has multiple subscribers. They are all SQL Express, so it's all Push Subscriptions.
When I try to add a subscriber by it's IP address, the snapshot gets delivered. Schema created, data loaded, but I see the following error in Replication Monitor:
The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write. (Source: MSSQL_REPL, Error number: MSSQL_REPL-2147201001)
Cannot find the object 'MSmerge_ctsv_E0801EECCA824BB29D48D36D64D2BAEA', because it does not exist or you do not have permission. (Source: MSSQLServer, Error number: 15151)
When I change the IP address in the script to the name of the machine it works perfectly. The ONLY thing I changed in the script was the IP address to the name.
The reason for this is that I have several client machines that will have connectivity, but NO name resolution back at the Server.
Please, Please, Please help!
Sample follows:
Code Snippet
exec sp_addmergesubscription
@publication = N'TestPub',
@subscriber = N'10.126.22.30',
@subscriber_db = N'dbTest',
@subscription_type = N'Push',
@sync_type = N'Automatic',
@subscriber_type = N'Local',
@subscription_priority = 0,
@description = null,
@use_interactive_resolver = N'False'
exec sp_addmergepushsubscription_agent
@publication = N'TestPub',
@subscriber = N'10.126.22.30',
@subscriber_db = N'dbTest',
@job_login = null, @job_password = null,
@subscriber_security_mode = 0,
@subscriber_login = N'Valid SQL LOGIN',
@subscriber_password = N'ValidPassword',
@publisher_security_mode = 1,
@frequency_type = 64,
@frequency_interval = 0,
@frequency_relative_interval = 0,
@frequency_recurrence_factor = 0,
@frequency_subday = 0,
@frequency_subday_interval = 0,
@active_start_time_of_day = 0,
@active_end_time_of_day = 235959,
@active_start_date = 20070607,
@active_end_date = 99991231,
@enabled_for_syncmgr = N'False'
Hi all,
I've been looking for the right stored procedure to create a push subscription for publication but i haven't had much luck so far. So I was wondering if you guys know which SP is appropriate, that'd be super great!! thanks guys!
note. the sp should run on the subscriber database.
thanks again
Hi There,
I wonder if anyone has run into this problem before.
I have inherited a SQL Server 2000 box with what appears to be a push subscription set up on it. However, the original Subscription database has long since been removed, leaving that box with what is essentially an orphaned push subscription.
We are trying to remove the subscription, but do not understand how. All documentation I have found keeps insisting that this be done at the subscriber database (which is for all effective purposes, destroyed).
How do I get rid of it?
Any ideas would be dearly appreciated.
Thanks.
I am using SQL 2000. How can I get my transactional replication reinitialized after it has failed with several attempts.
I know one way of doing it through enterprise manager and specifying the subscription to reinitialize. But this will apply the snapshot and will take long time.
Is there a fast way of doing it?
-Nipul
ERROR MESSAGE:
"Message: Incorrect syntax near 'NoteID'."
Here is a snipet from the output file:
2006-03-27 13:01:49.820 Skipping file 'NotesHistory_21.sch' because it has already been delivered for a previous article or by a previously interrupted snapshot.
2006-03-27 13:01:49.867 OLE DB Subscriber 'LUZERNV4-PDOSQL4': SET ANSI_NULLS ON
2006-03-27 13:01:49.898 OLE DB Distributor 'LARGOS00-SDI': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:49.945 OLE DB Subscriber 'LUZERNV4-PDOSQL4': SET QUOTED_IDENTIFIER ON
2006-03-27 13:01:50.008 [17%] OLE DB Subscriber 'LUZERNV4-PDOSQL4': CREATE TABLE [dbo].[MSmerge_conflict_EFILE_MERGE_NotesHistory](
[NoteID] [int] NOT NULL,
[CaseRefNum] [int] NOT NULL,
[KeyField] [varchar](500) NOT NULL,
[KeyValue] [varchar](500) NOT NULL,
[Note] [varchar](800) NULL,
[NoteField] [varchar](100) NULL,
[ScanDocID] [int] NULL,
[PDF_ID] [int] NULL,
[RescanCode] [int] NULL,
[RescanNote] [varchar](100) NULL,
[AuditID] [bigint] NOT NULL,
[rowguid] [uniqueidentifier] ROWGUIDCOL NOT NULL
)
ꜽśã¹? êœ?Å›B 27 13:01î–”Å›è›ªç —êœ?Å›é”?Ä€Percent Complete: 17
2006-03-27 13:01:50.086 OLE DB Subscriber 'LUZERNV4-PDOSQL4': SET ANSI_NULLS ON
2006-03-27 13:01:50.117 Preparing table 'NotesHistory' for merge replication
2006-03-27 13:01:50.164 OLE DB Subscriber 'LUZERNV4-PDOSQL4': SET QUOTED_IDENTIFIER ON
2006-03-27 13:01:50.195 OLE DB Distributor 'LARGOS00-SDI': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:50.258 OLE DB Subscriber 'LUZERNV4-PDOSQL4': if object_id('MSmerge_conflicts_info') is not NULL
alter table [MSmerge_conflict_EFILE_MERGE_NotesHistory] add origin_datasource_id uniqueidentifier NULL
2006-03-27 13:01:50.351 OLE DB Subscriber 'LUZERNV4-PDOSQL4': if object_id('MSmerge_conflicts_info') is not NULL
create nonclustered index [ncMSmerge_conflict_EFILE_MERGE_NotesHistory] on [MSmerge_conflict_EFILE_MERGE_NotesHistory] ([rowguid], origin_datasource_id)
2006-03-27 13:01:50.383 OLE DB Subscriber 'LUZERNV4-PDOSQL4': exec sp_MSsetconflicttable @article = N'NotesHistory', @conflict_table = N'MSmerge_conflict_EFILE_MERGE_NotesHistory'
2006-03-27 13:01:50.430 OLE DB Subscriber 'LUZERNV4-PDOSQL4': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:50.476 [17%] The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.Percent Complete: 17
2006-03-27 13:01:50.50é”?Ä€
2006-03-27 13:01:50.539 Applied script 'NotesHistory_21.cft'
2006-03-27 13:01:50.586 OLE DB Subscriber 'LUZERNV4-PDOSQL4': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:50.617 OLE DB Distributor 'LARGOS00-SDI': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:50.711 Percent Complete: 17
2006-03-27 13:01:50.742 {call sp_MSsetconflicttable (N'NotesHistory', N'MSmerge_conflict_EFILE_MERGE_NotesHistory', N'LARGOS00-SDI', N'EFILE', N'EFILE_MERGE')}
2006-03-27 13:01:50.773 OLE DB Distributor 'LARGOS00-SDI': {call sys.sp_MSadd_merge_history90 (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)}
2006-03-27 13:01:50.867 Percent Complete: 0
2006-03-27 13:01:50.898 Category:COMMAND
Source: Failed Command
Number: 0
Message: {call sp_MSsetconflicttable (N'NotesHistory', N'MSmerge_conflict_EFILE_MERGE_NotesHistory', N'LARGOS00-SDI', N'EFILE', N'EFILE_MERGE')}
2006-03-27 13:01:50.961 Percent Complete: 0
2006-03-27 13:01:50.992 Category:SQLSERVER
Source: LUZERNV4-PDOSQL4
Number: 102
Message: Incorrect syntax near 'NoteID'.
2006-03-27 13:01:51.039 Percent Complete: 0
2006-03-27 13:01:51.070 Category:NULL
Source: Merge Replication Provider
Number: -2147201001
Message: The merge process was unable to deliver the snapshot to the Subscriber. If using Web synchronization, the merge process may have been unable to create or write to the message file. When troubleshooting, restart the synchronization with verbose history logging and specify an output file to which to write.
2006-03-27 13:01:51.133 Disconnecting from OLE DB Subscriber 'LUZERNV4-PDOSQL4'
2006-03-27 13:01:51.180 Disconnecting from OLE DB Subscriber 'LUZERNV4-PDOSQL4'
2006-03-27 13:01:51.226 Disconnecting from OLE DB Subscriber 'LUZERNV4-PDOSQL4'
2006-03-27 13:01:51.258 Disconnecting from OLE DB Subscriber 'LUZERNV4-PDOSQL4'
2006-03-27 13:01:51.305 Disconnecting from OLE DB Publisher 'LARGOS00-SDI'
2006-03-27 13:01:51.336 Disconnecting from OLE DB Publisher 'LARGOS00-SDI'
2006-03-27 13:01:51.383 Disconnecting from OLE DB Publisher 'LARGOS00-SDI'
2006-03-27 13:01:51.414 Disconnecting from OLE DB Publisher 'LARGOS00-SDI'
2006-03-27 13:01:51.445 Disconnecting from OLE DB Distributor 'LARGOS00-SDI'
2006-03-27 13:01:51.492 Disconnecting from OLE DB Distributor 'LARGOS00-SDI'
2006-03-27 13:01:51.523 The merge process will restart after waiting 60 second(s)...
I seem to be missing something.
I'm trying to pull a subscription from SQL Server 2000.
(To a desktop SQL 2000 install <msde i guess>)
The general error I keep running into is
When creating the subscription...
"Error 15004: Name cannot be NULL"
I cannot figure out where this problem originates.
I'm running the SQL Service account and Executive under a domain account.
(same one on both machines)
Does anyone know where I'm missing the Permissions for the subscription?
Please impart any Replication suggestions you have. Don't hold back....
Thanks in Advance,
Dano
hi,
I want to setup transactional replication(PULL) between 2 servers .
can anyone guide me with the steps involved while performaing a Pull replication from server1 to server2.
Any help appreciated.
Trying to set up Merge Replication using FTP with PULL subscriptions on sql 2000
Are there any issues that anyone is aware of that may affect this working.
I have setup a pull subscription on the subscriber for transactional replication. The distribution job continues to run, but doesn't do anything because it says: The initial snapshot for publication 'man4' is not yet available.
How can I tell if the snapshot is running, and can I see the snapshot where it was created?
Hello!
Question of such plan, to documentation to Microsoft SQL Server 2005 Express Edition it is written, that the given product supports only PUSH replication, however in his{its} structure there is an agent replmerg.exe which description says:
replication merge. Synchronization means, that the agent of merge transfers changes from the subscriber to the publisher, and then transfers changes from the publisher on the subscriber €¦
And so the question if this agent is present at this edition, whether that is possible to adjust manually his{its} call, or through Windows the agent, for realization PULL replication or it is impossible and for what reasons?
Thanks.
Hello,
I have the following situation. I have a single publication on my publisher Server. This publication is created using SQL Server Manager. Snapshot is created completly. Now I want several Pull subscriptions from several machines to work with this publication (One subscription per machine). I'm creating these subscription using RMO. I'm synchronizing data using RMO again. My code workflow is:
Syncronize -> success -> do nothing
-> fail -> Check if everything with Publisher and Publication is ok -> Generate Snapshot -> Create Subsscription -> Sync again. (I tried to eliminate Generate Snapshot step but couldn't because I receive error that I must rerun Snapshot Generation.)
When I tested my code per single machine it's working. Next test I tried was to run my program on 2 machines simultaneously.
The result is:
---> System.Data.SqlClient.SqlException: Another snapshot agent for the subscription(s) is running or the server is working on a previous request by the same agent.
or:
---> System.Data.SqlClient.SqlException: Unable to acquire the replication merge administrative application lock for database 'XXX'. This could be due an active snapshot running while the schema change (DDL) or the administrative proc change was attempted.
Replication merge admin stored procedure 'sp_changemergepublication' failed for publication 'YYY'. This could be due an active snapshot running while the admin proc was called.
The problem is obvious but because I'm new to the replication I'm not sure if I did general mistake in what I want to achieve. Any advices how can I fix my problem will be highly appreciated.
We need to configure a way to publish from development to testing and from testing to production. An easy, automated process would be best.
View 1 Replies View RelatedHi I want to Set up Such Merge Replication, Which can can Synchronize With out Network, Means Syncronization using CD.
Also When the Network connectivity will be available then it should do synchronization
I wants to transfer some file using CD only those changes to database which hasn't been synchronized, thats why Backup will not work.
Pls Help me, or tell me wether it is possible or not.
Tell me some work around, or ask me details,
You got to help me out, Otherwise I will loss trust in MSDN Forums.
Thanks in advance
Vishalgiri Goswami
Greetings:
I am working on a replication setup using transactional replication using with pull subscriptions and a separate distributor. The pull subscriptions are located on a SQL cluster using the virtual SQL Server name as the subscriber; when the box fails over, we get an error of missing replication.dlls. Researching further, we found that replication only works on one node of the subscriber.
Any ideas on what we did wrong in the setup?
Thanks,
Lee Everest
www.texas2oo.com/sqlblog
I created transactional replication on a database and setup pull subscriptions on each subscriber to run at a scheduled time once a day. The scheduled start time on each subscriber can differ. The transaction log on the publishing database will eventually consume all possible disk space. Is it possible (and safe) to shrink or truncate the transaction log file for the publishing database before all the subscribers completed running its daily pull subscription? If not, how can I manage disk space for the transaction log on the publishing database and ensure all transaction are replicated to the subscriber?
Thanks in advance.
Hi
We have setup transactional replication between 2 databases on SQL Server 2000 SP3a (~70GB), using a concurrent snapshot (to prevent locking out of the live database) to initilaise the data and a pull subscription from the second database.
From analysing the msdistribution_history table in the distribution database on the subscriber it appears that the snapshot is being applied in a continuous loop to the subscriber database. Viewing the comments column in the msdistribution_history table we can see the following sequence of events occuring
Initialising
Applied script 'snapshot.pre'
Then it applies all the schema files .sch
Then it applies all the index files .idx
The it bulk copies the data in (bcp)
Then it creates the Primary Keys
Then it applies all the trigger files .trg
Then it applies all the referential integrity files .dri
These all complete successfully but then the process kicks off again immediately after reapplying the snapshot. We are unaware of any settings that may be causing this.
Any help on what maybe causing this would be much appreciated.
Hi all,
I have following problem:
I'm developing a Windows Mobile application, which is using RDA Pull for retrieving data from SQL Server 2005 database to PDA. Please, see the example:
Code Snippet
using (SqlCeEngine engine = new SqlCeEngine(connStr))
{
engine.CreateDatabase();
}
serverConnStr="Provider=SQLOLEDB;Data Source=.;User ID=sa;Initial Catalog=Demo;Password=xxx";
using (SqlCeRemoteDataAccess rda = new SqlCeRemoteDataAccess(
Configuration.Default.SyncServerAddress, "", "", connStr))
{
rda.Pull("MyTable", "SELECT * FROM mytable", serverConnStr, RdaTrackOption.TrackingOffWithIndexes, "ErrorTable");
}
Everythink works fine, when I use 'sa' user account in serverConnStr.
But, when I change conn string to:
"Provider=SQLOLEDB;Data Source=.;User ID=test;Initial Catalog=Demo;Password=test"
the sqlcesa30.dll cannot connect to SQL Server database.
In the sqlcesa30.log then I found following line:
Code Snippet
2007/04/17 10:43:31 Thread=1EE30 RSCB=16 Command=PULL Hr=80040E4D Login failed for user 'test'. 18456
The user 'test' is member of db_owner, db_datareader and public roles for the Demo database and in SQL Server Management Studio I'm able to login to the Demo database with using the 'test' users credentials and I'm able to run the select command on 'mytable'.
So, what's wrong? Why the sqlcesa30.dll process cannot login to the Demo database, and from another application with using the SAME connection string it works?
Please help.
Thank you.
Fipil.
Dear all,,
I used a code that import data from an excel file into a dataset,
now I want to insert the dataset into a table in my database(SQLserver database) using a VB.NET code
Could you help me?
Thanks in advance,,
Here is my code:
Imports System.Data.OleDbPartial Class _DefaultInherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.ClickDim connString As String = ConfigurationManager.ConnectionStrings("xls").ConnectionString
' Create the connection object Dim oledbConn As OleDbConnection = New OleDbConnection(connString)
Try
' Open connection
oledbConn.Open()
' Create OleDbCommand object and select data from worksheet Sheet1Dim cmd As OleDbCommand = New OleDbCommand("SELECT * FROM [Sheet1$]", oledbConn)
' Create new OleDbDataAdapter Dim oleda As OleDbDataAdapter = New OleDbDataAdapter()
oleda.SelectCommand = cmd
' Create a DataSet which will hold the data extracted from the worksheet.Dim ds As Data.DataSet = New Data.DataSet()
' Fill the DataSet from the data extracted from the worksheet.oleda.Fill(ds, "Sheet1")
' Bind the data to the GridView
GridView1.DataSource = ds.Tables(0).DefaultView
GridView1.DataBind()
Catch
Finally
' Close connection
oledbConn.Close()
End TryEnd Sub
End Class
While trying to push a tracked table using RDA.push, I get the following error:
Error Code: 80004005
The message cannot be built. The make message failed.
Minor Err: 28581
Source: Microsoft SQL server 2005 Mobile Edition.
All other tables in the database are getting pulled and pushed correctly. This table is different only in the larger number of columns, around 150. It has a primary key, no other constraints.
Any help to find the reason for this error will be greatly appreciated.
- Paul