![]() | |
![]() |
| | Thread Tools | Display Modes |
#1
| |||
| |||
|
#2
| |||
| |||
|
#3
| |||
| |||
|
|
I'd recommend transactional replication with a nosync initialization. This is where the initial setup on the reporting server is achieved by using a restore of the database and after that, only subsequent changes are sent down. If you are using SQL Server 2005, greater concurrency can be achieved by using the read committed snapshot isolation level. Cheers, Paul Ibison SQL Server MVP,www.replicationanswers.com |
#4
| |||
| |||
|
#5
| |||
| |||
|
|
Have a look at Hilary's book for snapshot and transactional, but if you're after more merge info and don't like the Pro book then it's really BOL that you need and then doing some scenarios for yourself to gain experience. As for websites, I have some useful info on the site below and there are other articles out on the various SQL Server sites you can get by googling, but nothing I think specific to your requirements. |
|
BTW this doesn't really lend itself to modifying the filters dynamically. At least this is not as straightforward as you might think. Normally the partitions are well designed to start with. If you want something more dynamic, then I'd not filter at all in replication and I'd use filters on the client application instead. Cheers, Paul Ibison SQL Server MVP,www.replicationanswers.com |
#6
| |||
| |||
|
|
I am involved in a scenario where there is a huge (SQL Server 2005) production database containing tables that are updated multiple times per second. End-user reports need to be generated against the data in this database, and so the powers-that-be came to the conclusion that a reporting database is necessary in order to offload report processing from production; of course, this means that data will have to be replicated to the reporting database. However, we do not need all of the data in the production database, and perhaps a filtering criteria can be established where only certain rows are replicated over to the reporting database as they're inserted (and possibly updated/deleted). The current though process is that the programmers designing the queries/reports will know exactly what data they need from production and be able to modify the replication criteria as needed. For example, programmer A might write a report where the data he needs can be expressed in a simple replication criteria for table T where column X = "WOOD" and column Y = "MAHOGANY". Programmer B might come along a month later and write a report whose relies on the same table T where column X = "METAL" and column Z in (12, 24, 36). Programmer B will have to modify Programmer A's replication criteria in such a way as to accomodate both reports, in this case something like "Copy rows from table T where (col X = "WOOD" and col Y = "MAHOGANY") or (col X = "METAL" and col Z in (12, 24, 36))". The example I gave is really trivial of course but is sufficient to give you an idea of what the current thought-process is. I assume that this is a requirement that many of you may have encountered in the past and I am wondering what solutions you were able to come up with. Personally, I believe that the above method is prone to error (in this case the use of triggers to specify replication criteria) and I'd much rather use replication services to copy tables in their entirety. However, this does not seem to be an option in my case due to the sheer size of certain tables. Is there anything out there that performs replication based on complex programmer defined criteria? Are triggers a viable alternative? Any alternative out-of-the-box solutions? |
#7
| |||
| |||
|
|
Anthony Paul wrote: I am involved in a scenario where there is a huge (SQL Server 2005) production database containing tables that are updated multiple times per second. End-user reports need to be generated against the data in this database, and so the powers-that-be came to the conclusion that a reporting database is necessary in order to offload report processing from production; of course, this means that data will have to be replicated to the reporting database. However, we do not need all of the data in the production database, and perhaps a filtering criteria can be established where only certain rows are replicated over to the reporting database as they're inserted (and possibly updated/deleted). The current though process is that the programmers designing the queries/reports will know exactly what data they need from production and be able to modify the replication criteria as needed. For example, programmer A might write a report where the data he needs can be expressed in a simple replication criteria for table T where column X = "WOOD" and column Y = "MAHOGANY". Programmer B might come along a month later and write a report whose relies on the same table T where column X = "METAL" and column Z in (12, 24, 36). Programmer B will have to modify Programmer A's replication criteria in such a way as to accomodate both reports, in this case something like "Copy rows from table T where (col X = "WOOD" and col Y = "MAHOGANY") or (col X = "METAL" and col Z in (12, 24, 36))". The example I gave is really trivial of course but is sufficient to give you an idea of what the current thought-process is. I assume that this is a requirement that many of you may have encountered in the past and I am wondering what solutions you were able to come up with. Personally, I believe that the above method is prone to error (in this case the use of triggers to specify replication criteria) and I'd much rather use replication services to copy tables in their entirety. However, this does not seem to be an option in my case due to the sheer size of certain tables. Is there anything out there that performs replication based on complex programmer defined criteria? Are triggers a viable alternative? Any alternative out-of-the-box solutions? Is it possible to create views, then configure things so that just those views are replicated as tables on the second server?- Hide quoted text - - Show quoted text - |
#8
| |||
| |||
|
|
Is it possible to create views, then configure things so that just those views are replicated as tables on the second server?- Hide quoted text - - Show quoted text -- Hide quoted text - - Show quoted text - |
#9
| |||
| |||
|
|
Hello Paul, On Apr 17, 6:26 pm, "Paul Ibison" <Paul.Ibi... (AT) Pygmalion (DOT) Com> wrote: Have a look at Hilary's book for snapshot and transactional, but if you're after more merge info and don't like the Pro book then it's really BOL that you need and then doing some scenarios for yourself to gain experience. As for websites, I have some useful info on the site below and there are other articles out on the various SQL Server sites you can get by googling, but nothing I think specific to your requirements. Will do. BTW this doesn't really lend itself to modifying the filters dynamically. At least this is not as straightforward as you might think. Normally the partitions are well designed to start with. If you want something more dynamic, then I'd not filter at all in replication and I'd use filters on the client application instead. Cheers, Paul Ibison SQL Server MVP,www.replicationanswers.com Ahhh.... then that's a problem, I'd definitely need the ability to be able to programatically and dynamically change the filtering criteria as the need arises, in this case every time a new report is requested that needs a subset of data not being captured by the replication process. You would think that this is such a common scenario... Also, filtering on the client side is not an option either since that would mean that all of the data would get replicated to the reporting db. I could have sworn that I read in msdn that the filters could be changed via stored procs though... I'll have to look that up. Thanks for your help Paul! Anthony |
#10
| |||
| |||
|
|
This may sound like a stupid question, but are you sure replicating the whole database isn't an option? I know you've described the database as huge, but one mans huge is another mans insignificant (or the other way around). It just sounds like you're putting in a lot of work when you may be able to keep it simple. Apologies if this is a path you've already worn smooth, just wondering what has made you sure that bog standard replication isn't the way to go. Damien- Hide quoted text - - Show quoted text - |
![]() |
| Thread Tools | |
| Display Modes | |
| |