Home > Articles > Databases > SQL Server

Replicating Code Modules with SQL Server 2005

Baya Dewald
  • PrintPrint
  • Share ThisShare This
  • DiscussDiscuss
Close WindowBaya Dewald

Baya Dewald

Learn more…

Recommended Practices for Analysis Services 2005/2008 Design
Feb 8, 2010
SQL Server Analysis Services 2005/2008 Administration
Jan 22, 2010
SQL Server 2005 Transactional Replication Agents
Oct 20, 2006
Replicating Code Modules with SQL Server 2005
Sep 15, 2006
Monitoring and Troubleshooting Replication Using SQL Server 2005
Sep 1, 2006
Maintaining Transactional Replication with SQL Server 2005
Aug 18, 2006
Setting Up Transactional Replication with SQL Server 2005
Aug 11, 2006
Monitoring and Tuning SQL Server with Profiler
Mar 3, 2006
Tips and Tricks Within Microsoft Analysis Services
Feb 24, 2006
Case Study of Building a Data Warehouse with Analysis Services (Part Two)
Feb 17, 2006
Case Study of Building a Data Warehouse with Analysis Services (Part One)
Feb 10, 2006
Developers vs. DBAs: Keys to Successful Cohabitation
Oct 6, 2005
SQL Server Transactional Replication Agents
Oct 22, 2004
Replicating Code Modules in SQL Server
Oct 15, 2004
Working with Analysis Services Cubes in SQL Server
Oct 1, 2004
Dimensional Databases: Building A Data Warehouse
Sep 17, 2004
SQL Server Log Shipping
Aug 20, 2004
Maintaining Transactional Replication
Apr 30, 2004
Monitoring and Troubleshooting Transactional Replication
Apr 23, 2004
Setting Up Transactional Replication with SQL Server
Mar 26, 2004
Introduction to Database Replication
Mar 5, 2004
SQL Server: Advantages and Drawbacks of User-Defined Functions
May 16, 2003
SQL Server User-Defined Functions (UDFs)
May 2, 2003
SQL Server String, Cursor, Security and Rowset Functions
Apr 18, 2003
Date, Math and Text Functions in SQL Server 2000
Apr 4, 2003
SQL Server System-Related Functions
Mar 14, 2003
Enhancing SQL Server Functionality with Functions
Feb 21, 2003
Optimizing Transact-SQL Code
Aug 9, 2002
SQL Server: Optimizing Database Performance Through Indexes
Aug 2, 2002
SQL Server: Tuning Database Design
Jul 26, 2002
SQL Server Tuning: Database Maintenance
Jul 19, 2002
Application Performance Tuning
Jul 12, 2002
Options Affecting SQL Server Locking Behavior
May 31, 2002
SQL Server: Blocking Problems
May 24, 2002
SQL Server: Details of Locking
May 17, 2002
SQL Server: Transaction and Locking Architecture
May 10, 2002
SQL Server and OPENXML
May 1, 2002
DTS Tips and Tricks
Mar 8, 2002
The DTS Object Model
Mar 1, 2002
Introduction to Data Transformation Services (DTS)
Feb 22, 2002
Normalizing Name Data in SQL Server
Jan 25, 2002
String Manipulations with SQL Server 2000
Jan 25, 2002
The EXPLICIT Mode of FOR XML
Jan 18, 2002
XML Support in Transact-SQL
Jan 18, 2002
Gathering Data for a Data Warehouse
Jan 11, 2002
Steps Involved in Building a Data Warehouse
Jan 11, 2002
Populating a Data Warehouse with SQL Server 2000
Nov 9, 2001
SQL Server: Determining Whether a Date is a Business Day
Nov 9, 2001

Sorry, this author hasn't posted any blogs.

Administrator's Guide to SQL Server 2005

Like this article? We recommend
Administrator's Guide to SQL Server 2005

As with previous releases of the software, SQL Server 2005 enables you to replicate code modules: stored procedures, views (including indexed views), and user-defined functions (UDFs). Baya Pavliashvili gives you an overview of replicating code modules and explains when it is beneficial to do so.

Previous articles in this series taught you how to replicate table articles using SQL Server 2005. As with previous releases of the software, SQL Server 2005 enables you to also replicate code modules: stored procedures, views (including indexed views), and user-defined functions (UDFs). This article will give you an overview of replicating code modules and explain when it is beneficial to do so.

Code Module Replication Setup

You can configure code module replication much the same way as table replication. In fact, the same publication can contain table, indexed view, view, UDF, and stored procedure articles. Prerequisites for replicating each type of code module are detailed in the following table.

Article Type

Prerequisite

View

Tables referenced by the view must exist on the subscriber. Tables don’t have to be replicated, however.

Indexed View

Tables referenced by the indexed view must exist on the subscriber. Tables don’t have to be replicated, however.

Indexed View

Subscriber servers must be running SQL Server 2000 or later. All subscribers must use Enterprise Edition of SQL Server.

Stored Procedure, UDF

All objects referenced by the stored procedure or UDF must exist on the subscriber. Referenced objects don’t have to be replicated, however.

You can use the Publication Wizard to configure replication for views, UDFs, and stored procedures. Once you choose the database in which you’re about to create the publication and publication type you can choose articles—the following figure adds a view, an indexed view, a stored procedure, and a UDF to a publication:

You can click the Article Properties button to configure options for each article you add to the publication. You can set several options for each type of replicated code module. You can also replicate the schema of views, indexed views and UDFs. Stored procedures provide additional flexibility—you can replicate their execution as well as their definition. The following table summarizes the options you can configure when replicating code modules.

Article Type

Option/Value

Description

View

Copy User Triggers: True or False

Creates triggers on the replicated view in the subscription database if they exist on the publisher.

View

Indexed View

Stored Procedure

User Defined Function

Copy Extended Properties: True or False

Creates extended properties of the replicated view on subscriber.

View

Indexed View

Stored Procedure

User Defined Function

Destination Object Name/Destination Object Owner

You can create the replicated object with the same name and owner as on the publisher or different name and/or owner.

View

Indexed View

Stored Procedure

User Defined Function

Action if name in use: Keep existing object unchanged OR Drop existing object and create a new one

Note that if you keep the existing object, the definition of the code module on publisher and subscriber might be different.

View

Indexed View

Stored Procedure

User Defined Function

Create Schemas at Subscriber: True or False

Determines whether the CREATE SCHEMA statement should be executed on the subscriber if the schema to which an object belongs does not exist.

Stored Procedure

Replicate:

Stored procedure definition only

Execution of the stored procedure

Execution in a serialized transaction of the SP

Determines whether execution of the replicated stored procedure should be replicated.

Note that the ALTER PROCEDURE statement will replicate schema changes even for publications that execute replicated stored procedures, so stored procedure definition changes will always be delivered to the subscribers (unless you explicitly turn off replicating schema changes, as shown later in this article).

Once you have set the properties of each article, you can advise SQL Server to create a snapshot of the publication immediately and/or create a schedule for the Snapshot agent. Next, you specify the security settings for the Snapshot agent and Log Reader agent, review the summary of the actions the wizard is about to undertake, and click the Finish button to create the publication. For a detailed review of each screen of the Publication Wizard, please refer to the first article of this series (the screens for code module articles are nearly identical to those used for table articles).

The Publication Wizard warns you of prerequisites for each type of code module you’re trying to replicate. However, you can create the publication even if dependent objects do not exist on the subscribers.

The process of creating a subscription for a publication that replicates code modules is identical to that of replicating table articles. If any of the objects referenced by replicated code module doesn’t exist on the subscriber, the Distribution agent will fail, but the subscription will still be created. The error message generated by the Distribution agent will help you determine the cause of the problem because it provides the attempted command (see the following figure).

The following script creates a publication with stored procedure, view, and UDF articles:

-- Adding the transactional publication
exec sp_addpublication @publication = n’pub_name’, 
@description = 
N’Transactional publication of database ’’AdventureWorksDW’’ .’, 
@sync_method = N’concurrent’, @retention = 0, @allow_push = N’true’, 
@allow_pull = N’true’, @allow_anonymous = N’true’, 
@enabled_for_internet = N’false’, @snapshot_in_defaultfolder = N’true’, 
@compress_snapshot = N’false’, @ftp_port = 21, @ftp_login = N’anonymous’, 
@allow_subscription_copy = N’false’, @add_to_active_directory = N’false’, 
@repl_freq = N’continuous’, @status = N’active’, 
@independent_agent = N’true’, @immediate_sync = N’true’, 
@allow_sync_tran = N’false’, @autogen_sync_procs = N’false’, 
@allow_queued_tran = N’false’, @allow_dts = N’false’, @replicate_ddl = 1, 
@allow_initialize_from_backup = N’false’, @enabled_for_p2p = N’false’, 
@enabled_for_het_sub = N’false’
GO

-- Adding the transactional articles
-- UDF:
exec sp_addarticle @publication = n’pub_name’, 
@article = N’udfMinimumDate’, @source_owner = N’dbo’, 
@source_object = N’udfMinimumDate’, @type = N’func schema only’, 
@description = N’’, @creation_script = N’’, @pre_creation_cmd = N’drop’, 
@schema_option = 0x0000000008000001, @destination_table = N’udfMinimumDate’, 
@destination_owner = N’dbo’, @status = 16
GO
-- stored procedure:
exec sp_addarticle @publication = n’pub_name’, 
@article = N’update_factFinance’, @source_owner = N’dbo’, 
@source_object = N’update_factFinance’, @type = N’proc exec’, 
@description = N’’, @creation_script = N’’, @pre_creation_cmd = N’drop’, 
@schema_option = 0x0000000008000001, @destination_table = N’update_factFinance’, 
@destination_owner = N’dbo’, @status = 0
GO
-- indexed view:
exec sp_addarticle @publication = n’pub_name’, 
@article = N’View_DimCustomer_Young’, @source_owner = N’dbo’, 
@source_object = N’View_DimCustomer_Young’, @type = N’indexed view schema only’, 
@description = N’’, @creation_script = N’’, @pre_creation_cmd = N’drop’, 
@schema_option = 0x0000000008000001, @destination_table = N’View_DimCustomer_Young’, 
@destination_owner = N’dbo’, @status = 16
GO
-- view:
exec sp_addarticle @publication = n’pub_name’, 
@article = N’vTimeSeries’, @source_owner = N’dbo’, 
@source_object = N’vTimeSeries’, @type = N’view schema only’, @description = N’’, 
@creation_script = N’’, @pre_creation_cmd = N’drop’, 
@schema_option = 0x0000000008000001, @destination_table = N’vTimeSeries’, 
@destination_owner = N’dbo’, @status = 16
GO
  • Share ThisShare This
  • Your Account

Discussions

Make a New Comment

You must log in in order to post a comment.

Related Resources

There are currently no related podcasts. Please check back later.

Great password information at a small price
By John Traenkenschuh on June 13, 2009 No Comments

Where can cash-strapped security pro's get great information on security basics??

Steven HainesOracle Buys Sun of $7.4B
By Steven Haines on April 20, 2009 No Comments

In a stunning turn of events, Oracle steps in and buys Sun amist the breakdown of IBM's attempt to acquire Sun.

Buck WoodyIf it's Free it's for Me
By Buck Woody on January 26, 2009 No Comments

Sign me up for anything free these days. I just ran across a book that promises to help you build a web site for free...

See All Related Blogs

Informit Network