Setting Up Transactional Replication with SQL Server 2005
In Microsoft SQL Server, you can
replicate data and schema changes from one database server to another.
Baya Pavliashvili walks us through the use of the SQL Server 2005
wizards and scripts for setting up transactional replication and points
out some of the cool new features of the latest version.
Replication is an advanced feature of Microsoft SQL Server, allowing you to
move data and schema changes from one database server to another. In this
article, I’ll show you how to set up transactional replication in a simple
environment using SQL Server 2005. Subsequent articles in this series will
discuss maintaining and troubleshooting transactional replication and
replicating code modules.
The examples in this article are based on SQL Server 2005 Service Pack 1.
Although this article isn’t intended to be a comparison of features
between versions 2000 and 2005, I will underline the improvements that I
consider worth observing. This article teaches you how to set up transactional
replication using wizards and scripts. In most cases, you’ll set up the
initial publication and subscribers using wizards; however, if you need to apply
the same publication in multiple environments, you’ll appreciate the
option of applying the scripts as opposed to going through wizards time and
again.
Configuring a DistributorSQL Server 2005 introduced numerous welcome improvements to replication, not
the least of which is shorter wizards. Following a wizard isn’t difficult,
but fewer wizard screens certainly make replication setup quicker. As a rule,
replication wizards in SQL Server 2005 are nearly 50% shorter than those in SQL
Server 2000.
The first step in configuring replication is designating a server that will
take care of storing and delivering replicated transactions—the
distributor. A single server can act as a publisher, distributor, and a
subscriber, all at the same time. However, in a realistic scenario you’re
likely to use two different servers as publisher and subscriber. Using a
separate server as the distributor can help to reduce the load on the
publisher.
To invoke the Configure Distribution Wizard, connect to an instance of SQL
Server by using the SQL Server Management Studio (SSMS), navigate to the
"replication" folder, right-click this folder, and choose Configure
Distribution from the pop-up menu. Replication wizards are no longer modal; that
is, you can continue working with SSMS while the wizard is active. The first
screen of the wizard simply informs you of the tasks that this wizard can help
you to accomplish. If you don’t ever want to see this screen again, simply
check the option to skip the introductory screen in the future.
The next screen asks whether you want to use the local server or a different
server as the distributor (see Figure 1).
If you want to use a remote distributor, you must first run the Configure
Distribution Wizard on that server. For this example, I’ll use the same
instance as both publisher and distributor. The next screen allows you to
specify the snapshot folder where data and schema of the published database will
be stored (see Figure 2). By default, the snapshot folder is called ReplData and
is created within the directory where the current SQL Server instance is
installed.
Notice the warning in the dialog box, indicating that the current directory
doesn’t support pull subscriptions. To use pull subscriptions, you need a
network folder for storing snapshots. Because both publisher and subscriber
instances of SQL Server in this example will reside on the same computer, I can
safely disregard this message, and simply click Next.
The following screen allows for configuring the distribution database’s
name and the location for its data and transaction log files. By default, the
distribution database is called distribution; you can modify the name if you
have a compelling reason to do so. For example, if you have dozens or hundreds
of publications, you might want to have multiple distribution databases, with
descriptive names for each one. The wizard will use the default location for
database and log files. You can configure the default location on the Database
Settings tab in the Server Properties dialog box in SSMS (right-click the server
and choose Properties to access the dialog box). Alternatively, you can change
file locations in the wizard, as shown in Figure 3.
The next screen enables servers to use the current distributor when
they’re configured as publishers (see Figure 4). This screen has a couple
of interesting options. First, if you click the ellipsis (...) button next to a
publisher, you’ll get a dialog box that allows you to configure the log
reader agent’s security credentials as well as the snapshot folder for
this publisher, as shown in Figure 5.
Second, the Add button allows you to add a SQL Server or Oracle publisher.
This feature is worth your attention because using the distribution database for
an Oracle publisher wasn’t available in previous versions.
After you’ve enabled the publishers, you can set a password for remote
publishers (see Figure 6). You must enter the same password twice. SQL Server
2005 allows the administrator to enforce password policies and password
expiration. Hence, the wizard warns you that the password you enter for a remote
publisher must meet the password policy requirements.
After you click Next on this screen, you can configure distribution right
away, save the script for later execution, or perform both actions. If you
choose to save the script, you’ll be asked for the location where you want
to save the file. At this point, the wizard presents a synopsis of the steps
it’s about to undertake; once you click Finish, the wizard will create the
script for adding a distributor and/or save the script, depending on what you
specified.
Listing 1 shows a script for configuring a distributor and adding a
publisher.
Listing 1 Sample script for configuring a distributor and adding a publisher.use master Once you’ve configured the distribution database, you can read or
modify the distributor properties by right-clicking the replication folder and
choosing Distributor Properties. The resulting dialog box has two pages—a
"general" page and a "publishers" page. The
"general" page allows you to view distribution database properties and
modify settings for transaction retention and/or history retention (see Figure
7).
Notice that you’re also allowed to create and configure a queue reader
agent from this screen. The queue reader agent is beyond the scope of this
article.
The "publishers" page of the Distribution Database Properties
dialog box lets you add a publisher or change existing publishers’
properties.
Creating a PublicationOnce you’ve configured a distributor, you’re ready to create
publications. To invoke the publication wizard, right-click the local
publications folder and choose New Publication from the pop-up menu. As with the
Distribution Configuration Wizard, the first screen of this wizard is
introductory in nature and can be skipped. The second screen allows you to
choose the database in which you want to create a publication; for purposes of
this article, I’ll create a publication within the AdventureWorksDW
database that can be created as part of SQL Server 2005 installation. After
selecting the database, you must choose the publication type. The wizard offers
the following options:
The wizard includes a brief description of each type of publication.
I’ll use the transactional publication for this example; refer to my
earlier articles for more info about other publication types.
A transactional publication can contain one or more articles. An
article can be a table, a view (including indexed views), a
user-defined function, or a stored procedure. For this example, I’ll
replicate the dimAccount table from the AdventureWorksDW database. As shown in
Figure 8, I can replicate all columns or a subset of all columns within a given
table.
Replication has certain rules as far as which columns can be filtered.
Transactional replication prohibits filtering primary-key columns. In addition,
if your publication allows updateable subscriptions, you must replicate the
msrepl_tran_version column (added by SQL Server when you create such
publications). Further, publications that allow updateable subscriptions must
replicate any column that doesn’t allow nulls, doesn’t have a
predefined default, and isn’t an identity column.
If you check the box Show Only Checked Objects in the List, the wizard limits
the list of articles to only those that have been checked. The Article
Properties button allows you to set properties for the highlighted article or
for all table articles. As Figure 9 shows, you can set a multitude of
replication-related properties for each article.
Most properties you can set for table articles are self-explanatory; for
example, the Copy Foreign Key Constraints option instructs the replication to
include foreign key constraints when creating the table in the subscriber
database.
A few properties deserve additional consideration:
Once you’ve set the necessary properties for the article you want to
replicate, you can add publication filters (see Figure 10). In previous versions
of SQL Server, these filters were referred to as horizontal
filters—you create them by supplying a WHERE clause to limit the
number of published rows. As shown earlier, now you can filter the publication
vertically by specifying which columns to publish.
The next step is to create a snapshot and/or specify the snapshot
agent’s schedule, as shown in Figure 11.
The snapshot agent copies the schema and data of the replicated article(s)
into the snapshot folder. If you click the Change button on this screen,
you’ll get the typical dialog box for creating job schedules; you can run
the snapshot agents monthly, weekly, daily, or even multiple times per day.
Next you specify the security settings for the snapshot and log reader agents
(see Figure 12). I’ll discuss replication security in greater detail in a
later article about transactional replication agents. For now, you just need to
know that you can customize security for each agent or use different credentials
for each.
The wizard next offers you the option to script the commands for creating the
publication. Review the synopsis of the steps the wizard is about to undertake;
then specify the publication name and click Finish to create the
publication.
Listing 2 shows the script for creating the publication.
Listing 2 Script for creating the example publication.use [AdventureWorksDW] You can view the newly created publication’s properties by expanding
the local publications folder, right-clicking the publication, and choosing
Properties from the pop-up menu. The properties dialog box has several pages,
each of which has a specific purpose:
The following table describes the subscription options you can set through
the Publication Properties dialog box. Note that several of these options are
new in SQL Server 2005.
Creating SubscriptionsUnlike previous versions, of SQL Server 2005 allows you to use the same
wizard to create either pull or push subscriptions. To invoke the new
subscription wizard right-click the publication (or the local subscriptions
folder) and choose New Subscriptions from the pop-up menu. After you get past
the introductory screen, select the publication for which you want to create
subscription(s). Next, indicate whether you want to use pull or push
subscriptions (see Figure 13). Pull subscriptions reduce the load on the
publisher, whereas push subscriptions make it easy to administer all
subscriptions at the central location. For this example, I’ll use push
subscriptions, but the wizard screens are nearly identical for pull
subscriptions.
Next you choose a subscribing server and database, as shown in Figure 14. You
can use an existing database or create a new database; if you choose to create a
new database on the subscribing server, you’ll get the typical dialog box
for creating databases. More interestingly, note that the wizard allows you to
use a non-SQL Server subscriber. You can choose either an Oracle or IBM DB2
subscriber for push subscriptions; only SQL Server subscribers are supported if
using pull subscriptions.
Non-SQL Server subscriptions have certain limitations and other
considerations of which you need to be aware. If you plan to use a non-SQL
Server subscription be sure to consult the
Heterogeneous Database Replication
topic in SQL Server Books Online.
After specifying the subscriber server and database, you need to configure
distribution agent security (see Figure 15). I’ll discuss replication
agent security in greater detail in another article. For now, keep in mind that
you can either impersonate the SQL Server Agent or use a separate Windows login
or SQL Server login for the distribution agent. For this example, I’ll use
the SQL Server Agent service account for running the distribution agent and for
connecting to the subscriber.
Now it’s time to define a synchronization schedule—how often you
want the replicated transactions to be delivered to the subscriber(s).
Replicating transactions continuously is the best option if you want to
achieve minimal latency; however, this option requires more work on the
publisher for push subscriptions and on the subscriber for pull subscriptions.
Scheduled delivery is a good option if you want to minimize the load
during business hours and deliver commands only at certain times each day.
On-demand delivery can be a viable option if you want to synchronize
your databases only occasionally.
After indicating the desired synchronization schedule, you can initialize the
subscription database (see Figure 16). During initialization, replication
creates the published objects’ schemas and copies data from the snapshot
folder to the subscription database; in addition, the stored procedures used for
replication are created in the subscriber database. In the dialog box, you can
specify that you don’t want to initialize the subscriptions—this
option is useful if the schema and data already exist on the subscriber. Other
options are to initialize subscriptions immediately or at first
synchronization—that is, the first time the snapshot agent runs.
You’re done specifying all the information that the wizard needs to
create subscriptions. At this point, you have the option to script the
subscription and/or to create subscriptions. The wizard allows you to review the
summary of the steps it’s about to undertake before you click the Finish
button.
Listing 3 shows a script for creating a subscription.
Listing 3 Sample script for creating a subscription.-----------------BEGIN: Script to be run at Publisher --------------- To review subscription properties, expand the publication found in the local
publications folder, right-click the subscription, and select Properties from
the pop-up menu. Figure 17 shows the resulting screen for this example.
If we check the stored procedures folder on the subscriber database,
we’ll find three new procedures that will be used for delivering the
replicated transactions:
Testing the ReplicationNow that we’ve configured replication, we can run a few SQL statements
to test it. I’ll execute the following UPDATE statement on the
publisher:
UPDATE dimAccount SQL Server informs me that this query affected one row. Next, I switch the
database context to the distribution database and run the stored procedure
sp_browsereplcmds. SQL Server shows the following command being delivered:
{CALL [sp_MSupd_dboDimAccount] (,,,,N’work in progress’,,,,,,11,0x1000)}
Finally, I query the subscribing database to see whether the changes made on
the publisher were replicated to the subscriber:
SELECT ummaryIn this article, I showed you how to set up transactional replication using
SQL Server 2005. We focused on how to configure a distributor, create a
publication, and subscribe to the publication. The example used in this article
was very simplistic. In the real world, setting up replication will present many
challenges, but this overview gives you enough of the general pattern for
replication with SQL Server 2005 to get you started.
Future articles in this series will dig deeper into transactional
replication. I’ll show you how to maintain and troubleshoot replication
and use some of its advanced functionality. 本文出自 51CTO.COM技术博客 |



















xu20cn
博客统计信息
热门文章
最新评论
友情链接