*************************************************************** Microsoft® SQL Server™ Notification Services 2.0 SP1 Readme File May 8, 2003 *************************************************************** (c) Copyright Microsoft Corporation, 2002-2003. All rights reserved. This file contains information that supplements the Microsoft SQL Server Notification Services documentation. *************************************************************** CONTENTS *************************************************************** 1.0 Introduction 1.1 Enhancements to Notification Services 2.0 SP1 1.2 Readme Addendum on the Web 1.3 Accessing Notification Services Documentation 2.0 Installing SQL Server 2000 2.1 Hardware and Software Requirements 2.2 Installing Notification Services 2.3 Running Notification Services Samples 2.4 Uninstalling Notification Services 3.0 Upgrading Applications to Notification Services 2.0 SP1 4.0 Product and Documentation Notes 4.1 Troubleshooting: SSL Security Errors 4.2 Disable Instance Before Running NSControl Upgrade 4.3 EventCollector.Write Method Does Not Return a Value 4.4 Do Not Use Digest Delivery with a Large Notification Batch Size 4.5 Incorrect Event Source Name in Documentation 4.6 Troubleshooting: Setup Completes Without Installing Notification Services 4.7 Event Messages Indicate Event Message DLL Cannot Be Found 4.8 Encryption Argument Key Value Is a Character String 4.9 Disabling Subscribers Disables the Instance 4.10 Delivery Failures Due to Content Formatting Errors Are Not Logged 4.11 When Running Notification Services on a Cluster, the Values Must Be the Cluster Name 4.12 SP1: NSControl Create Enables Cross-Database Ownership Chaining; Sysadmin Privileges Required 4.13 SP1: Writing Plain Text with the XSLT Content Formatter 4.14 SP1: Changes to the NSDiagnosticFailedNotifications Stored Procedure 4.15 Using Custom Components Built With Version 1.1.4322 of the .NET Framework * Items that begin with "SP1:" apply to Notification Services 2.0 SP1, but not earlier versions. *************************************************************** 1.0 Introduction *************************************************************** Notification Services 2.0 SP1 is a full release of Notification Services. If you already use Notification Services 2.0, you can install Notification Services 2.0 SP1 "side-by-side" and then upgrade your applications. For more information about upgrading applications, see section 3.0. If you have not previously installed Notification Services 2.0, you can install Notification Services 2.0 SP1 and use it to build and run your notification applications. ------------------------------------------------- 1.1 Enhancements to Notification Services 2.0 SP1 ------------------------------------------------- * Setup supports .NET Framework versions 1.0 and 1.1. * NSControl Create adds more indexes, including an index on the events table to improve vacuuming performance and on the notifications table to improve subscription processing performance. * NSDiagnosticFailedNotifications now returns one record per notification delivery failure (except content formatting errors, as documented in item 4.10). * You can configure the standard XSLT content formatter to write plain text. See item 4.11 for more information. * NSControl Create turns on cross-database ownership chaining for instance and application databases. See 4.12 for more information. * If you change the or values in the ADF and then update the application using NSControl Update, the Notify function is recompiled to include these changes. * When you add, change, or delete items in the node of a notification class and then update the application, NSControl updates the protocols without re-creating the entire notification class. * The Realtor sample application now runs on case-sensitive collations. * The NSEventFlushBatch stored procedure was updated to avoid a potential deadlock during multithreaded event submission. * Database connection strings were modified to address connection issues on operating systems with a Turkish locale. * On Windows Server 2003, the ASP.NET applications for managing sample application subscriptions run under the NT AUTHORITY\NETWORK SERVICE account. (On other operating systems, they still run under the ASPNET account.) ------------------------------ 1.2 Readme Addendum on the Web ------------------------------ Late-breaking documentation for Notification Services 2.0 SP1 is available on the Microsoft Product Support Services Web site at http://support.microsoft.com?kbid=818351. ------------------------------------------------- 1.3 Accessing Notification Services Documentation ------------------------------------------------- The Notification Services documentation is installed by the Setup program. You can install the documentation without installing Notification Services, which enables you to read the installation instructions and learn about the Setup options before installing Notification Services. Links to online documentation and documentation downloads, including the Global Documentation Pack, are located at http://go.microsoft.com/fwlink/?LinkId=16139. *************************************************************** 2.0 Installation *************************************************************** Notification Services Setup can install five sets of components and one subcomponent: * The engine components, which run the Notification Services event collection, generation, formatting, and delivery functions. When you deploy a scaled-out application, these components must be installed on each server that runs a hosted event provider, generator, or distributor. * The client components, which must be installed on servers that host independent event providers and subscription management applications. These components contain the interfaces used by independent event providers and applications to communicate with Notification Services. The NSControl utility, which you use to administer an instance of Notification Services, is also installed as part of the client components. * The Bulk Event Submission subcomponent, which must be installed with the client components if you want to submit XML data. * The database components, which must be installed on each database server that hosts instance and application databases. The database components include extended stored procedures used to generate notifications. * Documentation, which can be installed anywhere you want to have access to the Notification Services documentation. * A set of sample applications that you can use to become familiar with Notification Services. You can run the samples from within Microsoft Visual Studio® .NET. You can install all components on one server, or you can install components on separate servers as needed. -------------------------------------- 2.1 Hardware and Software Requirements -------------------------------------- Before you install Notification Services, ensure that your computer meets the following requirements: IMPORTANT: .NET Framework version 1.0 or 1.1 must be installed prior to installing the engine and client components of Notification Services. If you install later versions of .NET Framework, install them side-by-side with version 1.0 or 1.1. IMPORTANT: SQLXML 3.0 must be installed prior to installing the engine and bulk event submission components of Notification Services. If you install later versions of SQLXML, do not remove SQLXML 3.0; install them side-by-side with SQLXML 3.0. Hardware for Core Components =============================================================== * Computer Pentium 450 MHz minimum, Pentium 733 MHz or faster recommended. * Memory (RAM) 128 MB minimum, 256 MB or more recommended. * Hard disk space Notification Services components: 10 MB. If the databases are on the same server as Notification Services, additional disk space is required for your database tables, log files, and temporary database tables. Software for Engine Components =============================================================== * Operating system Microsoft Windows® 2000 SP2 (or later), Windows XP Professional, or Windows Server 2003. * Microsoft Data MDAC version 2.6 or later, required Access Components to install the Microsoft .NET Framework; (MDAC) also required by Microsoft SQLXML. * SQL Server 2000 SQL Server 2000 client tools, required Client Tools by SQLXML. * Microsoft SQLXML SQLXML version 3.0 (and its service packs). * .NET Framework .NET Framework version 1.0 or 1.1 (and their service packs). To obtain the .NET Framework, MDAC, and SQLXML, go to http://go.microsoft.com/fwlink/?linkid=7733. Software for Client Components =============================================================== * Operating system Microsoft Windows® 2000 SP2 (or later), Windows XP Professional, or Windows Server 2003. * Microsoft Data MDAC version 2.6 or later, required to Access Components install the .NET Framework; also (MDAC) required by SQLXML. * .NET Framework .NET Framework version 1.0 or 1.1 (and their service packs). Software for Bulk Event Submission Subcomponent =============================================================== * SQL Server Tools SQL Server 2000 client tools, required by SQLXML. * Microsoft SQLXML SQLXML version 3.0 (and its service packs). Software for Database Components =============================================================== * SQL Server SQL Server 2000 Standard Edition, SQL Server 2000 Enterprise Edition, SQL Server 2000 Developer Edition, or SQL Server 2000 Evaluation Edition SQL Server 2000 Desktop Engine (MSDE 2000), SQL Server 2000 Personal Edition, and SQL Server 2000 CE Edition are not supported by Notification Services. Microsoft recommends the most recent service pack for SQL Server 2000. Software for Documentation =============================================================== * Internet software Microsoft Internet Explorer 5.01 or later. Software for Samples =============================================================== * Development tools All the samples are presented as Visual Studio .NET solutions with solution (.sln) files. You can use the samples without Visual Studio. NET; however, you will need to edit the files with a text editor or other XML editor. * Internet Information The system that runs the samples must Services (IIS) have Internet Information Services (IIS) 5.0 or later installed and running. This includes the Simple Mail Transfer Protocol (SMTP) service, the World Wide Web Publishing service, and the IIS Admin service. -------------------------------------------- 2.2 Installing Notification Services 2.0 SP1 -------------------------------------------- Installation Notes: * To run Notification Services Setup, the account you are using must be a member of the local Administrators group. To install the database components, the account you are using or an account you specify during Setup must be a member of the SQL Server sysadmin fixed server role. * You must run installation locally. Remote Setup is not available. * When you install the database components, make sure that the SQL Server 2000 database engine is running. Setup will not attempt to start SQL Server. Installation Instructions: 1. If you previously installed the Notification Services 2.0 samples, remove them using the RemoveSamplesDB.cmd script, which is located in the 2.0.2114.0\Samples folder. (For more information, see section 2.3.) 2. Run Notification Services Setup. If you downloaded the Setup file, the file name is MSSQLNS20SP1...exe. 3. On the Custom Setup screen, select the components you want to install. Ensure that the system meets the software requirements listed above. If the system does not meet the requirement for a component, you will not be able to install that component. You do not need to take corrective steps unless you want to install a component that is not available. 4. If you are installing the database components, enter additional information on the Database Component Setup and SQL Server Login Information screens: * If you have multiple instances of the SQL Server database engine installed, select one instance on the Database Components Setup screen. You can install the components on additional instances using the InstallXPs utility. * Select the type of authentication to use to log in to SQL Server on the SQL Server Login Information screen. Enter your user name and password if using SQL Server Authentication. 5. On the Ready to Install the Program screen, click Install. Additional installation instructions are available in Notification Services Books Online. ------------------------------------------------- 2.3 Running Notification Services 2.0 SP1 Samples ------------------------------------------------- When you install the sample applications, Setup adds a Vn.n.n.n\Samples folder that contains the sample files. Use the SetupSamples.cmd command-line script to configure the samples. You can then use the RunSamples.cmd command-line script or Visual Studio .NET to run the samples. For more information about the sample applications, see "Notification Services Programming Samples" in Notification Services Books Online. NOTE: Notification Services 2.0 and Notification Services 2.0 SP1 provide the same sample applications. Because the applications use the same names, you cannot run the samples side-by-side on 2.0 and SP1. Before running the SP1 samples, remove instances of the 2.0 sample applications by running the RemoveSamplesDB.cmd script, which is located in the v2.0.2114.0\Samples folder. Deleting the instances of sample applications also prevents the sample applications from breaking when you uninstall Notification Services 2.0. -------------------------------------- 2.4 Uninstalling Notification Services -------------------------------------- To uninstall Notification Services: 1. From the vn.n.n.n\Samples folder, run RemoveSamplesDB.cmd to delete any samples that use the Notification Services version you are removing. 2. Stop all instances of Notification Services that use the version you are removing. To stop an instance, run the following command: net stop NS$ 3. If using SQL Authentication, run UninstallXPs.cmd to remove the database components. Uninstall does not prompt for the SQL Server user name and password. The UninstallXPs script allows you to provide this information. 4. Click Add/Remove Programs in Control Panel. 5. Select Microsoft SQL Server Notification Services 2.0 SP1, and then click Remove. 6. Follow the on-screen instructions. *************************************************************** 3.0 Upgrading Applications to Notification Services 2.0 SP1 *************************************************************** To upgrade existing Notification Services applications to Notification Services 2.0 SP1, you must upgrade the instances that run those applications. NOTE: The examples below show how to upgrade using Windows Authentication to connect to SQL Server. If using SQL Server Authentication to connect to SQL Server, you must also use the -sqlusername and -sqlpassword parameters with the NSControl Disable, NSControl Enable, NSControl Upgrade, and NSControl Register commands. To upgrade an instance that runs on a single server, with the databases located on the same server or a remote server: 1. Install Notification Services 2.0 SP1. If the instance and database are on separate servers, you must install the engine components where the instance runs and the database components where the database runs. If you are using multiple database servers, make sure to install the database components on each server, using the InstallXPs command as documented in the "Installing Database Components on Additional Instances of SQL Server" topic in Notification Services Books Online. 2. Back up the application and instance databases. For more information about backing up databases, see SQL Server Books Online. 3. On the server where the instance runs, you must first unregister the instance using version 2.0.2114.0 of NSControl: a. On the Start menu, point to Programs\Microsoft SQL Server Notification Services (2.0.2114.0), and then click Notification Services Command Prompt to open a command prompt window. b. Disable the instance. Example: nscontrol disable -name StockInstance c. Stop the NS$ service. Example: net stop NS$StockInstance d. Unregister the instance. Example: nscontrol unregister -name StockInstance e. If you haven't already done so, uninstall the sample applications. Example: cd Samples RemoveSamplesDB f. Close the command prompt window. 4. You then must register and upgrade the instance using the Notification Services 2.0 SP1 version of NSControl: a. On the Start menu, point to Programs\Microsoft SQL Server Notification Services 2.0 SP1, and then click Notification Services Command Prompt to open a command prompt window. b. Register the instance. Example: nscontrol register -name StockInstance -server MyDBServer -service -serviceusername "MyDomain\MyUserName" -servicepassword "" c. Upgrade the instance. Example: nscontrol upgrade -name StockInstance -server MyDBServer d. Grant the NS$ service account permission to execute the SP1 extended stored procedures: Example: grantxpexec "MyDomain\MyUserName" e. Enable the instance. Example: nscontrol enable -name StockInstance f. Start the NS$ service. Example: net start NS$StockInstance If you have scaled-out the instance, meaning that the NS$ service, independent event providers, and subscription management applications run on multiple servers, you must run the above procedure on one server, and then unregister and re-register the instance on each additional server. When you are finished upgrading all instances to SP1, you can uninstall Notification Services 2.0.2114.0. For instructions based on common deployment configurations, download the "Upgrading Applications to Notification Services 2.0 SP1" white paper at http://go.microsoft.com/fwlink/?LinkId=16143. *************************************************************** 4.0 Product and Documentation Notes *************************************************************** These are issues that arose after the Notification Services Books Online documentation was completed. ---------------------------------------- 4.1 Troubleshooting: SSL Security Errors ---------------------------------------- If you receive SSL security errors in the event log when creating an instance or running the NS$ service, Notification Services might not be able to connect to SQL Server 2000. This error might be caused by the following issues: * If the Certificate Server is installed on a Microsoft Windows 2000 computer and the Certificate Authority (CA) name is the same as or starts with the machine host name, an attempt to connect to SQL Server 2000 might fail. To resolve this problem, obtain the latest service pack for SQL Server 2000. For more information, go to http://support.microsoft.com?kbid=302409. * If there is a slow network connection to the target server that is running SQL Server or to the server that authenticates Windows credentials, an attempt by Notification Services to connect to SQL Server might fail. This problem occurs only if you have a Secure Sockets Layer (SSL) certificate installed on the computer that is running SQL Server and if that SSL certificate meets the requirements to perform encryption. To resolve this problem, follow the instructions in Knowledge Base article 322144 at http://support.microsoft.com?kbid=322144. ----------------------------------------------------- 4.2 Disable Instance Before Running NSControl Upgrade ----------------------------------------------------- Before running NSControl Upgrade to upgrade instances of Notification Services from Standard Edition to Enterprise Edition, disable the instances before uninstalling Standard Edition. Use the following procedure to perform an upgrade from Standard Edition to Enterprise Edition: 1. Use the NSControl Disable command to disable all instances that use Standard Edition. 2. Use the Net Stop command to stop the corresponding NS$ services. 3. Uninstall Notification Services Standard Edition. 4. Install Notification Services Enterprise Edition. 5. Use NSControl Upgrade to upgrade each instance that used Standard Edition to Enterprise Edition. 6. Use NSControl Enable to enable all instances that you upgraded. 7. Use the Net Start command to start the corresponding NS$ services. ------------------------------------------------------- 4.3 EventCollector.Write Method Does Not Return a Value ------------------------------------------------------- The EventCollector.Write Method topic shows the method returning an integer value. EventCollector.Write does not return a value. The corrected information for this method follows: [Visual Basic .NET] Public Function Write(ByVal As Object) [C#] public void Write(object ); [C++] public: void Write(Object* ); [JScript] public function Write( : Object); ------------------------------------------------------- 4.4 Do Not Use Digest Delivery with a Large Notification Batch Size ------------------------------------------------------- If you enable digest delivery for a notification class by setting the value in the application definition file (ADF) to true, do not set a custom notification batch size using the element. Setting a large value can cause the number of connections to SQL Server to quickly increase, consuming all available memory. ------------------------------------------------ 4.5 Incorrect Event Source Name in Documentation ------------------------------------------------ Notification Services events are logged to the Windows application log. Windows Event Viewer shows the source of the events in the application log in the Source column. The source of all Notification Services events is NotificationServices. The "Event Logging Overview" and "Choosing Monitoring Tools" topics incorrectly document the source as NS$. ------------------------------------------------------- 4.6 Troubleshooting: Setup Completes Without Installing Notification Services ------------------------------------------------------- When you run Setup, if the InstallShield Wizard Completed page appears immediately and contains the following text, the account used to run setup might not have the necessary permissions: The wizard was interrupted before Microsoft SQL Server Notification Services could be completely installed. Your system has not been modified. To complete installation at another time, please run setup again. First, ensure that the account used to run Setup has local Administrator privileges. If the account does have local Administrator privileges, the problem can still occur if the following two conditions exist on the computer: * The registry key value "DefaultAccessPermission" exists under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole. * The default access permissions assigned to Component Services do not include the account used to run Setup. Note: By default, the registry value DefaultAccessPermission under HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole does not exist. The value is created by other applications or when you use the Component Services tool to add groups or users to the COM default access permissions. To add the account used to run Setup to Component Services: 1. From the Start menu, click Run. 2. In the Run box, enter Dcomcnfg.exe and then click OK. 3. Display the Default COM Security tab using the instructions for your operating system: * If running the Windows 2000 operating system, click the Default Security tab. * If running the Windows XP operating system, do the following: a. Navigate to Component Services\Computers\My Computer. b. Right-click My Computer and select Properties. c. Click the Default COM Security tab. 4. Click the Edit Default button. 5. Click the Add button and add the account used to run Setup. -------------------------------------------------------------- 4.7 Event Messages Indicate Event Message DLL Cannot Be Found -------------------------------------------------------------- If you install multiple versions of Notification Services on a computer and then uninstall a version, Notification Services messages in the event log might contain the following text, which indicates that the instance cannot find the event message DLL. The description for Event ID ( #### ) in Source ( NotificationServices ) cannot be found. The local computer may not have the necessary registry information or message DLL files to display messages from a remote computer.... The full text of the event message is present after this text; however, the link to Web content for the event message is not included with the message. To fix this issue, use NSControl Register to re-register any instance of Notification Services that uses an installed version. This repairs a pointer to the event message DLL. For more information, see "Re-Registering an Instance" in Notification Services Books Online. ------------------------------------------------------- 4.8 Encryption Argument Key Value Is a Character String ------------------------------------------------------- The NSControl Create, NSControl Update, and NSControl Register commands have an optional "argumentkey" argument that specifies a key value used to encrypt delivery channel and event provider arguments. The key value must be a character string. If the string contains any spaces, enclose the string in quotation marks. For more information, see the "Configuring Argument Encryption" topic in Notification Services Books Online. ----------------------------------------------- 4.9 Disabling Subscribers Disables the Instance ----------------------------------------------- If you use NSControl Disable to attempt to disable only the subscribers of an instance, NSControl will disable the entire instance and all applications hosted by the instance. To resolve this issue, use one of the following two methods: * After you disable the subscribers component, re-enable all other components of the instance using NSControl Enable: nscontrol enable -n -distributor -events -generator -subscriptions * When disabling subscribers, include another component to disable and then re-enable that component: nscontrol disable -n -generator -subscribers nscontrol enable -n -generator You can check the status of the instance using the NSControl Status command: nscontrol status -n --------------------------------------------------------- 4.10 Delivery Failures Due to Content Formatting Errors Are Not Logged --------------------------------------------------------- If the delivery of a notification fails because of a content formatting error, such as an XSLT file that is not valid, the notification is not logged as failed. This causes the following errant results: - The distribution log, viewable from the NSNotificationDistribution view, does not include the notifications that failed due to content formatting errors. - The NSDiagnosticNotificationClass stored procedure shows some failed notifications as "not yet delivered" (in the NotificationsNotYetDelivered column) because the notifications are not marked as failed in the distribution log. --------------------------------------------------------- 4.11 When Running Notification Services on a Cluster, the Values Must Be the Cluster Name --------------------------------------------------------- When you create a Notification Services application, you must specify where the distributor, generator, and hosted event provider components run. To do this, you provide values for the element in each , , and node in the ADF. NSControl loads this data into the application database. When an NS$ service starts, it determines where it is running (its host name) and then compares this value to the value for each distributor, hosted event provider, and generator. If the host name matches the value, the service starts the component. Unmatched components are put in an "Enabled Pending" state. The service determines its host name as follows: * For non-clustered servers, the host name is simply the computer name. * For clustered servers, the host name is the cluster name (not the node or virtual server name). Therefore, when you run Notification Services on a cluster, you must set the values to the cluster name. ---------------------------------------------------------- 4.12 SP1: NSControl Create Enables Cross-Database Ownership Chaining; Sysadmin Privileges Required ---------------------------------------------------------- SQL Server 2000 SP3 introduces options for configuring cross- database ownership chaining. When you install SP3, cross- database ownership chaining is disabled for all user databases by default. After installation, you can enable cross-database ownership chaining for individual databases using the sp_dboption system stored procedure. An instance of Notification Services uses two or more databases: one instance database and one or more application databases. These databases require cross-database ownership chaining to allow Notification Services stored procedures to access objects in the instance and application databases. When you run NSControl Create, NSControl attempts to turn on cross-database ownership chaining for instance and application databases. If the SQL Server 2000 databases are pre-SP3, the cross-database ownership chaining commands are ignored. Only members of the sysadmin fixed server role can configure cross-database ownership chaining. As a result, NSControl turns on cross-database ownership chaining only if it is run by members of the sysadmin server role. A user who is a member of the dbcreator fixed server role can run NSControl Create, but cross-database ownership chaining will not be turned on for the instance and application databases. Therefore, if you run NSControl Create, but are not a member of the sysadmin server role, a member of the sysadmin server role must enable cross-database ownership chaining for the instance database and each application database before you can run the instance of Notification Services. Additional information about cross-database ownership chaining is available in SQL Server 2000 Books Online (Updated - SP3). The following topics address cross-database ownership chaining: - Backward Compatibility for Cross-Database Ownership Chaining - Using Ownership Chains - sp_dboption - Setting Configuration Options You can download SQL Server 2000 Books Online (Updated - SP3) at http://go.microsoft.com/fwlink/?LinkId=16144. ------------------------------------------------------------ 4.13 SP1: Writing Plain Text with the XSLT Content Formatter ------------------------------------------------------------ In Notification Services 2.0, the XSLT content formatter always wrote valid XML. As a result, it wrote the following characters as their entity references: > (>), < (<), ' ('), " ("), and & (&). In SP1, the XSLT content formatter can write plain text, which converts the entity references to their character equivalents. You configure text output with the xsl:output element: The following example is the "NoOp.xslt" file with the output method set to text, with some text added to show that entity references are converted: Today's Notifications: The changes in SP1 alter the formatting of XML output. By default, the XSLT content formatter writes XML with no carriage returns or indents. You can use the "indent" attribute of the "xsl:output" element to automatically indent XML. If event data contains reserved characters or entity references, be aware of the following: * If event data contains entity references or XML fragments, set the DisableEscaping attribute of the content formatter to true so that the content formatter does not excessively transform the data (such as converting & to &amp;). * If the event data contains reserved characters (such as &), set the DisableEscaping attribute of the content formatter to false so that the content formatter converts reserved characters into valid XML before the final transformation. For more information about the xsl:output element, see the following page at MSDN Online: http://go.microsoft.com/fwlink/?LinkId=16145. --------------------------------------------------------- 4.14 SP1: Changes to the NSDiagnosticFailedNotifications Stored Procedure --------------------------------------------------------- In Notification Services 2.0, the NSDiagnosticFailedNotifications stored procedure did not return failed notifications. This has been resolved in Notification Services 2.0 SP1. NSDiagnosticFailedNotifications returns one row for each failed delivery attempt. If a single notification fails multiple times, multiple rows for that notification appear in the result set. Note that the columns in the result set have changed. The following two columns were added: - DeliveryRequestTime - SentTime DeliveryRequestTime is the time at which the distributor handed the notification to the delivery protocol for delivery. A value is shown only if the distributor logging option is "true" in the ADF. SentTime is the time at which the delivery protocol reported the delivery status of the notification. Note that the report shows all failed notifications with a SentTime value between the StartDateTime and EndDateTime values provided when you run NSDiagnosticFailedNotifications. The following two columns were removed: - NumberOfDeliveryAttempts - LastFailureTime Documentation for the updated stored procedure is located on the Microsoft Product Support Services Web site at http://support.microsoft.com?kbid=818352. ----------------------------------------------------------- 4.15 Using Custom Components Built With Version 1.1.4322 of the .NET Framework ----------------------------------------------------------- Notification Services 2.0 SP1 is built using the 1.0.3705 version of the .NET Framework. By default, Notification Services attempts to load and use this version. If a custom component is built using version 1.1.4322 of the .NET Framework, this version is also loaded. When Notification Services and the component use different versions of the .NET Framework, differences in the class libraries can cause application errors, such as the following: * 2009: Notification Services failed to instantiate the event provider. * 6005: The assembly does not contain the required content formatter class. To resolve these errors, build custom components using version 1.0.3705 of the .NET Framework. To do this, add the directory containing the 1.0.3705 assemblies to the references path for the custom components project. If you must build custom components with version 1.1.4322 of the .NET Framework, you can force Notification Services to use the same version. To do this, add a node to the NSService.exe.config file, which is in the vN.N.N.N\Bin folder of Notification Services. The following example shows the file with the node: The elements restrict the versions of the .NET Framework that Notification Services can use. The order of the listed versions determines the order in which Notification Services attempts to load the .NET Framework versions. In the example above, Notification Services will first attempt to load version 1.1.4322 of the .NET Framework. If it is not available, Notification Services will attempt to load version 1.0.3705 of the .NET Framework. You must restart the NS$ service to apply changes made to NSService.exe.config.