HAPPY BOOKSGIVING
Use code BOOKSGIVING during checkout to save 40%-55% on books and eBooks. Shop now.
Register your product to gain access to bonus material or receive a coupon.
Learn SQL Server Notification Services from the topic authority! Shyam Pather is the Development Lead for the SQL Notification Services Team at Microsoft. He has a unique understanding of the SQL-NS product, having been one of its key architects since its inception. Microsoft SQL Server 200 Notification Services will instruct you on how to program SQL Notification Services as a platform for building applications that send notifications on a large scale. It covers the basic problem of notification applications, describes the SQL Notification Services platform and describes how to use it to build rich, scalable notification applications. Topics covered include:
Each concept is taught through working sample code that you can actually run. In addition to illustrating platform features, this book provides design guidelines that help you build the best application possible.
31 SQL Server Tips That Can Save Your Butt
What Has Driven Delta Dental to a SQL Beta Next Year?
The Simplest Notification Application: Stock Quotes
The Simplest SQL Notification Application: Stock Quotes
Introduction.
I. NOTIFICATION SERVICES CONCEPTS.
1. An Overview of Notification Applications.
The Publish-Subscribe Phenomenon.
Components of a Pub-Sub System.
Challenges in Building Notification Applications.
Scalability.
Reliability.
Rich Application Features.
Security and Privacy.
SQL Server 2000 Notification Services.
A Platform for Building Notification Applications.
A Platform for Executing Notification Applications.
Why Use SQL Notification Services?
Summary.
2. Getting Set Up.
Your Development Environment: The Big Picture.
Computers.
Tools for the Development Process.
Visual Studio .NET.
Accounts and Security.
SQL Server Authentication Modes.
Prerequisites and System Requirements.
Obtaining SQL Notification Services.
Standard or Enterprise Edition?
Setting Up Your Development Environment.
Installing SQL Notification Services.
SQL Server Client Tools.
Command Prompt.
Installing the Source Code.
Creating the Service Account.
Setting Up SQL Permissions and Accounts.
Environment Variables.
Testing Your Development Environment.
Summary.
3. The Simplest Notification Application: Stock Quotes.
The SQL-NS Application Model.
Events As Data.
Subscriptions As Data.
Matching Events with Subscriptions.
Scalability of the SQL-NS Application Model.
Programming to the SQL-NS Application Model.
Building the Stock Application’s ADF.
The Completed ADF.
Schemas and Logic.
Component Configuration and the Phases of Processing.
Specifying Other Parts of the Stock Application.
The Instance.
Event Data.
Entering Subscriptions.
Seeing the Final Notifications.
Running the Stock Application.
Inside the Running Application.
The Database.
The Windows Service.
What Has the SQL-NS Platform Provided?
Cleaning Up the Instance and Application.
Summary.
4. Instances and the Instance Configuration File.
What Is an Instance?
Creating an Instance and Making It Run.
Compiling the ICF.
Registering the Instance.
Granting Permissions.
Enabling the Instance.
Starting the Instance.
Examining the Parts of the Instance.
Instance Database.
Application Databases.
Registry Keys.
Deployment of SQL-NS Instances on Multiple Servers.
The Instance Configuration File in Detail.
Parameters.
The Root Element.
The Instance Name and SQL Server.
The Applications.
Cleaning Up the Instance.
Summary.
II. NOTIFICATION SERVICES APPLICATION DEVELOPMENT.
5. Designing and Prototyping an Application.
What Is a SQL-NS Application?
Stages in the Application Development Process.
Supporting the Sample Application.
The Music Store Database Schema.
Creating the Music Store Database.
Initial Design: Seven Important Questions About Your Application.
Building the Application Prototype.
Building the ADF Incrementally.
Making Updates to an Instance and Its Applications.
Implementing the Initial Design.
Summary.
6. Completing the Application Prototype: Scheduled Subscriptions and ApplicationState.
Scheduled Subscriptions in the Music Store Application.
Source Code for this Part.
Event State.
Event Chronicles.
Declaring Event Chronicles.
Event Chronicle Rules.
Testing the Event Chronicle.
Scheduled Subscription Class.
Schema for the Subscriptions by Genre.
Subscription State.
Matching Logic for Scheduled Subscriptions.
Testing Scheduled Subscriptions.
Final Testing of the Prototype.
Summary.
7. The SQL-NS Subscription Management API.
Overview of Subscription Management Interfaces.
Types of Subscription Management Interfaces.
Architecture of Subscription Management Interfaces.
The SQL-NS Subscription Management API.
Fundamental Entities in the Subscription Management API.
Classes in the Subscription Management API.
Getting Set Up to Use the API.
The SQL-NS Assembly.
Referencing the SQL-NS Assembly.
Preparing the SQL-NS Instance.
Database Permissions for Subscription Management.
Verifying Your Setup.
Implementing the Logic Layer of a Subscription Management Application.
Purpose of the Logic Layer
Logic Layer Operations.
Logic Layer Code.
Connecting to the Data Layer: The Instance and Application Objects.
Manipulating Subscribers.
Manipulating Subscriber Devices.
Manipulating Subscriptions.
Helper Operations in the Logic Layer.
Building the User Interface.
User Interface Technologies.
Compiling the User Interface Code.
Running the Sample User Interface.
Examining the User Interface Code.
Summary.
8. Event Providers.
Overview of Event Providers and Event Submission.
Event Providers As Components of the SQL-NS Engine.
Event Providers As Standalone Applications.
Building and Configuring Event Providers.
Event Provider Concepts.
Event Providers and Event Sources.
Event Batches.
Event Provider Security.
Preparing to Work with the Source Code in This Part.
Source Files.
Changes to the Scripts for Argument Encryption.
Starting from a Clean Instance.
The AddSongs Program.
Installing Message Queuing.
Using the Built-in Event Providers.
The FileSystemWatcher.
The SQLProvider.
APIs for Building Custom Event Providers.
The Event Object API.
The XML Bulkload Event API.
SQL Stored Procedures for Event Submission.
Building Custom Hosted Event Providers.
Why Build a Custom Hosted Event Provider?
Choosing an Event Provider Type.
Classes, Interfaces, and Assemblies.
Hosted Event Provider Interfaces.
Building a Continuous Custom Hosted Event Provider.
Building a Scheduled Custom Hosted Event Provider.
Building Standalone Event Providers.
Why Build a Standalone Event Provider?
Standalone Event Provider Configuration in the ADF.
A Dedicated Program: The XML Event Provider.
Submitting Events from an Application.
Submitting Events with SQL Stored Procedures.
Cleanup: Preparing for the Next Part.
Summary.
9. Content Formatters.
Overview of Content Formatting.
Content Formatters and Distributors.
Content Formatter Input and Output.
Formatting for Different Languages and Device Types.
Formatting Digest and Multicast Notifications
Using a Content Formatter in Your Application.
Content Formatter Security.
Preparing the SQL-NS Instance.
Cleaning Up the Old Instance.
Changes to the ADF.
Creating the New Instance.
Submitting Events.
Adding Subscribers and Subscriptions.
Using the XsltFormatter.
Configuring the XsltFormatter in the ADF.
Input to the XSL Transforms.
Writing an XSL Transform for the XsltFormatter.
Using Locale and Device-Specific Transforms.
Building a Custom Content Formatter.
Why Build a Custom Content Formatter?
The Content Formatter Interface.
Implementing the Content Formatter Interface.
Declaring a Custom Content Formatter in the ADF.
Testing the Custom Content Formatter.
Summary.
10. Delivery Protocols.
Overview of Notification Delivery in SQL-NS.
Delivery Protocols in the SQL-NS Engine.
Configuring Delivery Endpoints: Delivery Channels.
Routing Notifications to Delivery Channels.
Declaring Delivery Channels and Custom Delivery Protocols in the ICF.
Declaring Protocol Support in the ADF.
Notification Batches and Distributor Work Items.
Delivery Protocol Operation.
Digest and Multicast Delivery.
Delivery Failure: Retry and Notification Expiration.
The Notification Distribution Views.
Encrypting Delivery Channel Arguments.
Database Roles for the Distributor.
Preparing to Work with Delivery Protocols.
Build Supporting Components.
Re-Creating the SQL-NS Instance.
Change Service Account Permissions.
Adding Subscriber Devices for New Delivery Channels.
Installing the SMTP Service.
Message Queuing for the Custom Delivery Protocol.
Using the Built-in SMTP Delivery Protocol.
Creating an SMTP Delivery Channel.
Declaring Support for the SMTP Delivery Protocol in the Notification Class.
Testing SMTP Delivery.
Building a Custom Delivery Protocol.
The Custom Delivery Protocol Interface.
Implementing the Custom Delivery Protocol.
Declaring the Custom Delivery Protocol in the ICF.
Creating a Delivery Channel for the Custom Delivery Protocol.
Supporting the Custom Delivery Protocol in the Notification Class.
Testing the Custom Delivery Protocol.
Restoring Your System.
Summary.
11. Debugging Notification Generation.
Debugging and the Development Process.
Syntax Errors in Rules.
Semantic Errors in Rules.
Inside the Notification Generator.
The Quantum Clock.
Activities Within a Quantum.
Using the SQL-NS Debugging Facilities.
Overview of Debugging Tools and Techniques.
Preparing to Debug: Disabling the Generator and Submitting Events.
Setting the Quantum Clock.
Preparing for Rule Firing.
Executing Rule Firings.
Using the Scheduled Subscription Debugging Stored Procedures.
Re-enabling the Generator.
Summary.
III. OPTIMIZATION, DEPLOYMENT, AND ADMINISTRATION.
12. Performance Tuning.
Overview of Performance Tuning in SQL-NS Applications.
Streamlining Data Flow.
Normalizing Data.
Prefiltering Events.
Optimizing Notification Generation.
Indexes and Query Optimization.
Optimizing the Quantum Duration.
Quantum Limits.
Optimizing Notification Distribution.
Notification Batch Size.
Using Multicast Delivery.
Delivery Protocol Performance.
Distributor Options.
Summary.
13. Deploying a SQL-NS Instance.
Deployment Configurations.
Single Machine Deployment.
Separating the Database Server.
Scaling the SQL Server: Providing More Generator Horsepower.
Separating SMIs and Standalone Event Providers.
Scaling Out the SQL-NS Service.
High Availability.
Configuring a Database System for Deployment.
Disks and Physical Database Files.
Defining Physical Database Files.
Setting the Database Recovery Model.
Vacuuming Old Data.
Deployment Security.
Security Basics for the Deployment Environment.
Controlling Database Access.
Using Throttles.
The Deployment Process.
Installing SQL-NS on the Deployment Machines.
Specifying the Server Configuration in the ICF and ADFs.
Deploying Custom Components.
Creating the Instance and Application Databases.
Registering the Instance on All Deployment Servers.
Granting Database Permissions to Deployment Accounts.
Granting Filesystem Permissions to Deployment Accounts.
Deploying the Subscription Management Interface and Standalone Event Providers.
Enabling a Deployed Instance.
Starting the Instance.
Summary.
14. Administering a SQL-NS Instance.
Monitoring and Reporting.
Using the Application Event Log.
SQL-NS Performance Counters.
SQL-NS Reporting Stored Procedures.
Maintenance Techniques.
Enabling and Disabling Components.
Cleaning Up Old Data.
Making Changes to Deployed SQL-NS Instances.
Backup and Restore.
Backing Up a SQL-NS Instance.
Restoring a SQL-NS Instance from Backup.
Summary.
15. Troubleshooting SQL-NS Applications.
Using the Troubleshooting Information in This Part.
Troubleshooting Compilation.
Problems with ICFs and ADFs.
SQL Errors During Compilation.
Troubleshooting Event Submission.
Event Provider Is Not Running.
Event Providers Do Not Submit Events.
Troubleshooting Notification Generation.
The Generator Is Not Running.
No Notifications Are Generated.
Troubleshooting Notification Distribution.
The Distributor or the Components It Hosts Are Not Running.
The Distributor Does Not Process New Notification Batches.
Notifications Are Not Delivered As Expected.
A Timeout Occurs While Reading Notification Data.
The Distributor Delivers Duplicate Notifications.
Notifications Are Delivered at Unexpected Times.
Notifications Are Delivered Via the Wrong Delivery Channel.
Summary.
Appendix A: Creating a Development Environment for Your Own SQL-NS Applications.
The Structure of the Development Environment.
The Development Environment Directory Layout.
Important Files in the Development Environment.
Extending the Development Environment.
Creating a Base Directory.
Creating the Directories and Files for a New Instance.
Building and Running the New Instance.
Adding Code to the New Instance.
Index.