How To Get The Amount Of Bytes Exchanged During A Merge Replication Between 2 MSSQL Servers
Jul 20, 2005
Hi, guys.
A very simple question for all of you: how can I get the amount of
bytes exchanged during a Merge replication between two Microsoft SQL
2000 servers?
I tried with success to replicate a table_test_repl from my local server to an other server.
I used only one table for testing.
After that, i can't drop the 2 tables a_test_repl (on my local server and the other : I've got a message 'cannot drop the table because it is published for replication'
What can I do? I need absolutely to drop these tables to keep a clean model and I can't drop the database and try again.
We are running merge replication, SQL Server 2005 Enterprise with SQL Mobile 2005 (Windows Mobile 5) subscribers. Partitions are filtered on HOST_ID.
Ocassionally we experience a situation where a subscriber experiences an unusually long synchronization duration, and upon examining Replication Monitor, it appears that twice the number of rows, or X the number of rows (up to 7 times the number of rows) that should have been inserted are recorded as synchronized for the session: once the normal amount as inserts and once the normal amount as updates. This occurs for all tables in the subscription. This occurs on a first time synchronization to an empty subscriber database where there should be only inserts taking place.
I have examined the snapshot partition folders for these users on the file system and they appear to be identical in size and content as other subscribers. Checking the last partition snapshot job run and other characteristics for the the subscriber in question, everything appears to be the same as other subscribers functioning normally.
The HOST_ID for us is an employee ID used to filter employee specific data. I have seen this happen if the subscriber changes the value for the HOST_ID used in filtering, after the mobile database has already been populated (2 employees attempt to use the same mobile device and database). But, we have seen this happen recently where the HOST_ID was apparantly never changed midstream.
This just started happening recently. The only modification around the same time frame was the implementation of a custom business logic handler/custom conflict resolver that performs like "Latest Wins" but has logic added to update the a last-update datetime column for selected transaction tables at time of synchronization, so that an SSIS job can detect the changed rows for copying incremental database changes to another application database. This all seems to be working perfectly.
I created a package that seems to work fine with a small amount of data. When I run the package however with more data (as in production) the merge join output is limites to 9963 rows, no matter if I change the number of input rows.
Situation as follows.
The package has 2 OLE DB Sources, in which SQL-statements have been defined in order to retrieve the data.
The flow of source 1 is: retrieving source data -> trimming (non-key) columns -> sorting on the key-columns.
The flow of source 2 is: retrieving source data -> deriving 2 new columns -> aggregating the data to the level of source 1 -> sorting on the key columns.
Then both flows are merged and other steps are performed.
If I test with just a couple of rows it works fine. But when I change the where-clause in the data source retrieval, so that the number of rows is for instance 15000 or 150000 the number of rows after the merge join is 9963.
When I run the package in debug-mode the step is colored green, nevertheless an error is displayed:
Error: 0xC0047022 at Data Flow Task, DTS.Pipeline: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "Merge Join" (4703) failed with error code 0xC0047020. The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.
To be honest, a few more errormessages appear, but they don't seem related to this issue. The package stops running after some 6000 rows have been written to the destination.
In one of our forth coming projects, with ASP.Net/C#/MSSQL Server, We have to deal with a Business table having about 15 millions of records. We want to know, that which methodologies should we adopt, both regarding front end and back end perspective, so the site could give optimised performance. Also in place of a Dedicated Server, the Hosting Company provides MSDE (that come with .net). Will this create any problem with this project, that have such a huge table? Should we go for some advanced database technique, such as, Clustering, Spliting Tables, etc.
Followings are the fields that the business table contains:
ID, Category ID (which comes from a Category table, each business is under a category), BusinessName, SignupDate, Address1, Address2, Phone Number, Hours Of Operation, Years in Business, LicenseNumber, DiscountCoupon, Website
Hy im PCV I want to know how to calculate the amount of data(in MB) that is transfered from 1 server trought another Puplisher--->Subscriber, using a merge replication. I know that the amount of data depends on the number of the rows and the scale of the colums. I only want to know how to calculate that amount of data. I am using Sql server 2000, and a OS windows XP profesional, thank you
HelloI have 2 locations, that each has an MSSQL 2000 server.Since the locations are to far from each other and the connection isvery slow.My thought was to have a database on both servers that should replicate“on the fly” or as asynchronous sync.The problem is that both locations work in the database frequently. Soit’s very important that there are no duplicate IDs.Is that possibly and how?~Peter
I know that adding a column using ALTER TABLE to add a column automatically allows SQLSERVER 2005 to replicate the schema changes to the subscribers, however, I would like to add a new column to an existing article that is being used for merge replication, however, I don't want this column to be replicated. Re-initialising the subscriptions is not a option. Help would be appreciated.
Greetings:I am trying to conceive what risks might be created by runningmultiple SQL servers within a domain under a single domain account, asopposed to 1) running under the local service account or 2) multipledomain service accounts.In this case, all the SQL servers are SQL2000 running on Win2003. Theservice account is assigned only to the "Domain Users" group.We do use linked server calls, and I have played and suceeded gettingKereberos up to avoid double hop issues when using Windows Auth. Infact, this is one of the reasons that sparked the question in my mind-- in all the MS Kerebos SQL<->SQL examples, the SQL servers run undera unique service account.As an aside, most of the servers are "line of business" servers, butHR runs under a unique server with more sensitive information. I don'treally think that merits a seperate service account, but again, Icould well be missing something.I mostly looking for food for thought, but concrete examples ofgotchas would be appreciated.Thanks all.d.
Mysql database provides a storage engine called "MERGE".A "MERGE" table is a collection of identical tables that can be used as one.(Identical meaning same column name,column width, column order etc.) .
The advantage is you can split a really huge table like LOG tables, STATS tables into seperate smaller tables but would still be able to make queries on them like a single table. More details, can be got from here:
I need to run an Insert query which pulls data from a table located on server A database AA Table AAA conditional on (or JOINED with) Table BBB in database BB sever B. In SQL 2000 it could be done as:
From Server A: sp_addlinkedserver B INSERT dbo.ResultsTable SELECT SourceTable.* FROM B.BB.dbo.BBB SourceTable INNER JOIN A.AA.dbo.AAA ConditionTable ON SourceTable.RecID = ConditionTable.RecID sp_dropserver B
In SSIS one of the possible solutions is to use a package which does the following: OPEN A + OPEN B-> SORT A + SORT B->MERGE JOIN A and B->OUTPUT RESULT
The problem with this approach is that it's extremely slow for large datafiles (50M records each)
Questions:
1) In the procedure above could the SORT step be avoided? 2) Is there another approach to run cross-servers JOIN in SSIS?
I have installed SQL 2005 (X64) on 64-bit Windows 2003 server (AMD). One of my databases need to connect several Oracle databases on 32 bit servers.
I managed to install Oracle 32 bit Client (was unsuccessful with 64 bit installation) and could set up the odbc (32). But I coul'nt find Oracle under linked servers!
I am working on bringing our disaster recovery site to be a live site. Currently we replicate to one of out servers (server B) with merge replication (from server A). Server A also does one way transactional replication form some table to several other servers including servers at the DR site.
This setup is not going to be fast enough for what we need so I am wondering if a table is receiving merge replication will the merge updates also replicate down the transaction path??
Example... Server B update a row and merges to Server A. With this update them replicate (via transactional) to Server C??
I'm creating a temporary table in a Sql 2005 stored procedure that contains the transaction amount entered in a period <= the period the user enters. I can return that amount in my result set. But I also need to separate out by account the amounts just in the period = the period the user enters. There can be many entries or no entries in any period. I populate the temporary table this way:
SELECT t.gl7accountsid, a.accountnumber, a.description, a.category, t.POSTDATE, t.poststatus, t.TRANSACTIONTYPE, t.AMOUNT, case when t.transactiontype=2 then amount * (-1) else amount end as transamount, t.ENCUMBRANCESTATUS, t.gl7fiscalperiodsid
FROM UrsinusCollege.dbo.gl7accounts a
join ursinuscollege.dbo.gl7transactions t on a.gl7accountsid=t.gl7accountsid
where (t.gl7fiscalperiodsid >= 97 And t.gl7fiscalperiodsid<=@FiscalPeriod_identifier) And poststatus in (2,3) and left(a.accountnumber,5) between '2-110' and '2-999' And right(a.accountnumber,4) > 7149 And not(right(a.accountnumber,4)) in ('7171','7897')
order by a.accountnumber
Later I create a temporary table that contains budget information. I join these 2 temporary tables to produce my result set. But I don't know how to get the information for just one period. For example, if the user enters 99 as the FiscalPeriod_identifier, I need a separate field that contains only those amounts(if any) that were entered for each account in Period 99.
Can anyone help? It may be that I am not seeing the forest for the trees, but I can't figure it out.
We recently installed another SQL Server so we could test performance of replication between the two servers. After I set up the replication between the two I got the following error: subscriber must be running in Per Seat (Named User) licensing mode to use this replication feature. Is there any way around this? Or could you direct me to some documention pertaining to this error? Thank you
We have a project that will consist of 3 production servers in 3 different regions and each server has it`s own clients in that region. We want to use replication to keep them all in synch so that if one goes down, the client PC`s would just re-connect to one of the other two remaining servers and keep working.
1. I am wondering what type of replication to use? 2. I was leaning towards merge, but was wondering how to use it to keep 3 servers in synch? If I use the Central publisher with updating subscribers scenario, I foresee a potential problem as follows:
A. Server1 is central publisher B. Server2 and Server3 are updating subscribers C. Server2 (or Server3) goes down, clients reconnect to Server1 and keep working. D. When Server2 (or Server3) is back up, Server1 will push all changes back to Server2.
but, E. Server1 goes down, clients reconnect to either Server2 or Server3 and keep working. F. Since Server1 is down, changes made to Server2 not replicated back to Server3 (The central publisher is gone) until Server1 comes back up. G. Server2 goes down while Server1 is down, clients re-connect to Server3. H. The changes made to Server2 were not replicated to Server3 because the central publisher is missing. I. Server3 therefore is missing data changes.
Please help me figure this out. I feel as if I am missing something that I could do to also keep Server2 and Server3 in synch with each other besides the Central Publisher.
Our existing SQL Server is experiencing some troubles and we would like to replace it with new hardware. Of course a migration will be in order to move off of this hardware and onto the new.
To better protect our business critical needs we have decided to implement SQL Server Replication. The SQL Server is what helps drive our everyday business. Without it, we are "dead in the water"! The other day, we lost approximately 10 hours of productivity until SQL Services could be restored.
My question is, if it would be wise to have yet a 3rd server used as a Distributor for Replication or if it would be okay to have the Distributor and Publisher on the same server?
I am concerned that there may be performance problems if we place the two roles on the same machine event though the hardware is very good. Below is the important server configuration.
Windows 2003 Standard Edition SQL Server Standard Edition Dual 2.4Ghz with HyperThreading 2GB of RAM RAID5 for MDF Files RAID1 for LDF Files
suppose i am repliacting(Transactional Replication) to two servers using the same publications can i stop replicating to one server without disturbing the other server? If i resume the replication to the server after two days what will happen to the two day's data?will they be replicated when i resume the replication? Thank you
Server_1 contains DB_A and DB_B. Server_2 contains DB_A and DB_B. Can replication be setup where Server_1 DB_A (publisher) publishes to Server_2 DB_A (subscriber) and Server_2 DB_B (publisher) publishes to Server_1 DB_B (subscriber)? The environment is NT 4 (sp3) and SQL 6.5 (sp5a). Thanks in advance.
I have two SQL Servers (6.5). One based in London (LDNINNTS9) and one in New York (NYINNTS2).
I had bidirectional replication set up on one table in a DB and everything is (WAS!!!) working fine. Came to work this morning (Monday typical!) and the following has happened.
When I select the remote servers option on the NY server from Enterprise manager I get the following error message
Unable to connect to site '0'because '' is not defined as a remote server.
Now it says that '' is not defined as a remote server. So I did a select of @@Servername and it has returned (null). It was set to NYINNTS2. I have tried executing some ISQL to change the name and started and stopped the SQL Services but the name remains (null). Does anyone have an idea of what I can do to set the name up as it was?
I know that the Server name gets set to null if it is invalid, but I am trying to set it to NYINNTS2, which should not be invalid? Does the domain name impact the validity of the name?
Just want to know if we can replicate data (Transactional Replication) from a clustered servers (server A and Server B are active-passive clustered running SqlServer 7) to another server C running SqlServer 7.
If yes, how to go about doing this. Any white papers, KB articles or books out there which will walk through the steps to do it.
Anyone know what or how to calculate how much bandwidth I may use during replication. I have done this with large pipes with out a problem, just concerned I may need to change the interval to something else.
How it is possible to perform "replication" between two databases using technological means of MS SQL Server 2005 if two servers do not have a connection at all. The only thing is possible - is transfer of data for the replication on a CD.
What is the best way to do it if central database has a hundreds of such "subscribers"?
Hello, I am playing around with the replication feature within mssql.
The system that I am developing requires a master database at a remote location, possibly at a data centre and have a onsite database. The idea of having a local database is that the system can be running in the event of no internet connection and all the local databases update the master server and the master server updating all the local databases so they all have the same data.
I have some questions.
1. I create a publication on the master server and setup a subscription on a local database; does information only go 1 way? Or do I need to setup a publication on the local database and setup a subscription on the master server for data to go both ways?
2. What is the best type of replication for information on all databases to be up-to-date with each other, Merge?
3. Is there any limitations with the replication feature that I need to be aware of?
4. Is there anything that I need to keep in mind when I set this up?
5. How much bandwidth does replication take up, I know there are a lot of factors involved when trying to calculate this type of thing but a good idea would be good.
Thank you for all your replies.
*edit* I am testing with 2 copies of mssql enterprise trial
My goal is to make from time to time a (one way) replication from MSSQL server (Win2K) to MySQL (Linux, i mean no ODBC here).
Is it possible and how ?
The preferable way is to use the MSSQL's replication features, but I have another idea - a simple (php, perl - no matter) program on the linux machine which will be "cron"-ed to run at the requested time intervals.
What are your recommendings ? Thanks in advance for every kind of help.
Hi everbody, I setup the Merge Replication , it is working perfectly. But i have one problem now it is updating both ways. I nedd one way. Any body tell me which parameter i have to change.
My production box is running on NT4.0,SP6, SQL Server7.0,SP2. We implemented Merge replication. Working fine last 7 months. Last weekend i disabled replication, Successfully removed Distributor and Publishor. After that try add new fileds but won't allowed me. It's give the error message. I Also found Some Conflict_tables found almost 20 tables. All system Tables. Can delete these these tables, if i delete any problem my database. I added filelds many times but this time i got errors.
I have just installed replication on our production server to Merge Replicate with a Laptop server that will travel from time to time. I have now noticed that we cannot add or change any fields or attributes on the tables which are being replicated (which are all tables in the DB). This is a problem because we are changing and adding columns all of the time. Is there a way around this issue like shutting down the replication service or something? I have been unsuccessful in finding a way around this other than removing replication while we make changes.
I have implemented a Merger replication on our development server and I get a fillowing error when I try to update one of the table in publisher. "Transaction cannot start while in firehose mode"
Hi, I read some where that replication has two types conflict resolution, 1. row based and 2. Column based... If I am right... Can any one point me how to find out this option and how to set it up....
I have a merge replication going between 4 servers. The problem is when ever I do some BCP transfer to one of the tables in one of the servers. It puts the data in that table. But that Data does not get replicated to any other server like it should.
Please Advice on what to do. Is there any option I am forgetting to set or something.