*************************************************************** Microsoft(R) SQL Server(TM) Notification Services 2.0 SP1 自述文件 2003 年 5 月 8 日 *************************************************************** (C) 版权所有 Microsoft Corporation,2002-2003。保留所有权利。 此文件包含的信息是对 Microsoft SQL Server Notification Services 文档的补充。 *************************************************************** 目录 *************************************************************** 1.0 简介 1.1 Notification Services 2.0 SP1 增强功能 1.2 网上自述文件附页 1.3 访问 Notification Services 文档 2.0 安装 SQL Server 2000 2.1 硬件和软件要求 2.2 安装 Notification Services 2.2 运行 Notification Services 示例 2.2 卸载 Notification Services 3.0 将应用程序升级为 Notification Services 2.0 SP1 4.0 产品和文档注释 4.1 疑难解答:SSL 安全性错误 4.2 运行 NSControl Upgrade 前禁用实例 4.3 EventCollector.Write 方法不返回值 4.4 不要对较大的批通知使用摘要传递 4.5 文档中错误的事件源名称 4.6 疑难解答:安装程序结束但未安装 Notification Services 4.7 事件消息指出找不到事件消息 DLL 4.8 加密参数注册表项值是字符串 4.9 禁用订阅者会禁用实例 4.10 不记录由于内容格式化错误而导致的传递失败 4.11 在群集中运行 Notification Services 时, 值 必须是群集名称 4.12 SP1:NSControl Create 启用跨数据库所有权链接;需要 Sysadmin 特权 4.13 SP1:使用 XSLT 内容格式化程序写入纯文本 4.14 SP1:对 NSDiagnosticFailedNotifications 存储过程的更改 4.15 使用通过 .NET Framework 版本 1.1.4322 构建的客户组件 * 以“SP1:”开头的项目适用于 Notification Services 2.0 SP1,而不 适用于早期版本。 *************************************************************** 1.0 简介 *************************************************************** Notification Services 2.0 SP1 是一个 Notification Services 完整 版本。 如果已经使用 Notification Services 2.0,那么可以并行安装 Notification Services 2.0 SP1,然后升级应用程序。有关升级应用 程序的详细信息,请参阅 3.0 一节。 如果以前未安装 Notification Services 2.0,那么可以安装 Notification Services 2.0 SP1,然后使用它来构建和运行您的通知 应用程序。 ------------------------------------------------- 1.1 Notification Services 2.0 SP1 增强功能 ------------------------------------------------- * 安装程序支持 .NET Framework 1.0 和 1.1。 * NSControl Create 添加了更多索引,包括事件表的索引(用于提高清除 性能)和通知表的索引(用于提高订阅处理性能)。 * 目前每次通知传递失败,NSDiagnosticFailedNotifications 就会返回 一个记录(内容格式化错误除外,如 4.10 一节中所述)。 * 可以配置标准 XSLT 内容格式化程序以写入纯文本。有关详细信息,请 参阅 4.11 一节。 * NSControl Create 对实例和应用程序数据库启用跨数据库所有权链接。 有关详细信息,请参阅 4.12 一节。 * 如果在 ADF 中更改了 值,然后使用 NSControl Update 更新了应用程序,Notify 函数就会 重新编译,以便包含这些更新。 * 如果在通知类的 节点中添加、更改或删除项目,然后更新 应用程序,则 NSControl 无需重新创建整个通知类即可更新协议。 * Realtor 示例应用程序目前运行时区分排序规则的大小写。 * 更新了 NSEventFlushBatch 存储过程,以避免多线程事件 提交中潜在的死锁。 * 修改了数据库连接字符串,以解决区域设置为土耳其语时操作系统上存在 的连接问题。 * 在 Windows Server 2003 上,用于管理示例应用程序订阅的 ASP.NET 应用程序在 NT AUTHORITY\NETWORK SERVICE 帐户下运行。(在其他操作 系统中,这些应用程序仍在 ASPNET 帐户下运行。) ------------------------------ 1.2 网上自述文件附页 ------------------------------ 从 Microsoft 产品支持服务网站可以获得 Notification Services 2.0 SP1 的最新文档,网址如下:http://support.microsoft.com?kbid=818351。 ------------------------------------------------- 1.3 访问 Notification Services 文档 ------------------------------------------------- Notification Services 文档由安装程序安装。可以只安装文档而不安装 Notification Services,这样,您可以在安装 Notification Services 之前阅读安装指导并了解安装选项。 指向联机文档和文档下载(包括全球文档包)的链接位于以下位置: http://go.microsoft.com/fwlink/?LinkId=16139。 *************************************************************** 2.0 安装 *************************************************************** Notification Services 安装程序将安装五组组件和一个子组件: * 引擎组件:用于 Notification Services 事件的收集、生成、格式 设置和传递。 当部署外向扩展型应用程序时,运行宿主事件提供程序、生成器或 分发服务器的所有服务器均需安装这些组件。 * 客户端组件:必须安装在作为独立事件提供程序和订阅管理应用程序 宿主的服务器上。客户端组件包含独立事件提供程序和应用程序与 Notification Services 进行通信时所使用的接口。用于管理 Notification Services 实例的 NSControl 实用工具也已作为客户端 组件的一部分安装。 * 大量事件提交子组件:如果希望提交 XML 数据,必须与客户端组件 一起安装该组件。 * 数据库组件:作为实例和应用程序数据库宿主的所有数据库服务器均需 安装该组件。数据库组件包括用于生成通知的扩展存储过程。 * 文档:可安装在任何需要访问 Notification Services 文档的位置。 * 一组示例应用程序:用于熟悉 Notification Services。可以在 Microsoft Visual Studio? .NET 中运行这些示例。 所有组件既可以安装在一台服务器上,也可以根据需要安装在不同服务 器上。 -------------------------------------- 2.1 硬件和软件要求 -------------------------------------- 安装 Notification Services 之前,请确保计算机满足下列要求: 要点:必须在安装 Notification Services 引擎组件和客户端组件之前 安装 .NET Framework 1.0 或 1.1。如果安装更高版本的 .NET Framework, 请将其与 1.0 或 1.1 并行安装。 要点:必须在安装 Notification Services 引擎组件和大量事件提交组件 之前安装 SQLXML 3.0。如果安装更高版本的 SQLXML,请勿删除 SQLXML 3.0,请将新版本组件与 SQLXML 3.0 并行安装。 核心组件的硬件要求 =============================================================== * 计算机 至少 Pentium 450 MHz, 建议 Pentium 733 MHz 或更高配置。 * 内存 (RAM) 至少 128 MB, 建议 256 MB 或更高。 * 硬盘空间 Notification Services 组件:10 MB。 如果数据库与 Notification Services 在 同一服务器上,则数据库表、日志文件和临时 数据库表还需要额外的磁盘空间。 引擎组件的软件要求 =============================================================== * 操作系统 Microsoft Windows? 2000 SP2(或更高版)、 Windows XP Professional 或 Windows Server 2003。 * Microsoft MDAC 2.6 或更高版本,安装 Microsoft .NET 数据访问组件 Framework 需要该组件;安装 Microsoft (MDAC) SQLXML 也需要该组件。 * SQL Server 2000 SQL Server 2000 客户端工具, 客户端工具 SQLXML 需要该工具。 * Microsoft SQLXML SQLXML 3.0(及其 Service Pack)。 * .NET Framework .NET Framework 1.0 或 1.1 (及其 Service Pack)。 要获取 .NET Framework、MDAC 和 SQLXML,请转至 http://go.microsoft.com/fwlink/?linkid=7733。 客户端组件的软件要求 =============================================================== * 操作系统 Microsoft Windows? 2000 SP2(或更高版)、 Windows XP Professional 或 Windows Server 2003。 * Microsoft 数据 MDAC 2.6 或更高版本,安装 .NET Framework 访问组件 (MDAC) 需要该组件;SQLXML 也需要该组件。 * .NET Framework .NET Framework 1.0 或 1.1 (及其 Service Pack)。 大量事件提交子组件的软件要求 =============================================================== * SQL Server 工具 SQL Server 2000 客户端工具, SQLXML 需要该工具。 * Microsoft SQLXML SQLXML 3.0(及其 Service Pack)。 数据库组件的软件要求 =============================================================== * SQL Server SQL Server 2000 标准版、 SQL Server 2000 企业版、 SQL Server 2000 开发版 或 SQL Server 2000 评估版 SQL Server 2000 桌面引擎 (MSDE 2000)、SQL Server 2000 个人版和 SQL Server 2000 CE 版不支持 Notification Services。 Microsoft 建议使用最新版本的 SQL Server 2000 Service Pack。 文档的软件要求 =============================================================== * Internet 软件 Microsoft Internet Explorer 5.01 或 更高版本。 示例的软件要求 =============================================================== * 开发工具 所有示例均通过解决方案 (.sln) 文件以 Visual Studio .NET 解决方案的形式提供。 可以不在 Visual Studio. NET 中使用这些 示例;但需要使用文本编辑器或其他 XML 编辑器编辑这些文件。 * Internet 运行示例的系统必须安装并运行 Internet 信息服务 信息服务 (IIS) 5.0 或更高版本。其中包括 (IIS) 简单邮件传输协议 (SMTP) 服务、万维网发布 服务和 IIS 管理服务。 -------------------------------------------- 2.2 安装 Notification Services 2.0 SP1 -------------------------------------------- 安装说明: * 要运行 Notification Services 安装程序,所用帐户必须是本地 Administrators 组的成员。要安装数据库组件,所用帐户或在安装 程序中指定的帐户必须是 SQL Server sysadmin 固定服务器角色的 成员。 * 必须在本地运行安装程序。不能使用远程安装。 * 安装数据库组件时,请确保 SQL Server 2000 数据库引擎正在运行。 安装程序不会尝试启动 SQL Server。 安装指导: 1. 如果以前安装了 Notification Services 2.0 示例,请使用 2.0.2114.0\Samples 文件夹中的 RemoveSamplesDB.cmd 脚本将其 删除。(有关详细信息,请参阅 2.3 一节。) 2. 运行 Notification Services 安装程序。如果已下载了安装程序文件, 则文件名为 MSSQLNS20SP1...exe。 3. 在“自定义安装”屏幕中,选择要安装的组件。请确保系统满足前面 列出的软件要求。如果系统不满足组件的要求,您将不能安装该组件。 除非要安装不可用的组件,否则无需执行更正步骤。 4. 如果要安装数据库组件,请在“数据库组件安装程序”和“SQL Server 登录信息”屏幕中输入所需信息: * 如果安装了多个 SQL Server 数据库引擎实例,请在“数据库组件 安装程序”屏幕中选择一个实例。可以使用 InstallXPs 实用工具 将组件安装到其他实例。 * 在“SQL Server 登录信息”屏幕中选择登录 SQL Server 时使用的 身份验证类型。如果使用 SQL Server 身份验证,请输入您的用户名 和密码。 5. 在“已做好安装程序的准备”屏幕中,单击“安装”。 有关其他安装指导信息,请参阅 Notification Services 联机丛书。 ------------------------------------------------- 2.3 运行 Notification Services 2.0 SP1 示例 ------------------------------------------------- 安装示例应用程序时,安装程序会添加包含示例文件的 Vn.n.n.n\Samples 文件夹。使用 SetupSamples.cmd 命令行脚本配置示例。然后可以使用 RunSamples.cmd 命令行脚本或 Visual Studio .NET 来运行示例。有关 示例应用程序的详细信息,请参阅 Notification Services 联机丛书中 的“Notification Services 程序设计示例”。 说明:Notification Services 2.0 和 Notification Services 2.0 SP1 提供的示例应用程序相同。因为二者提供的应用程序名称相同,所以无法 并行运行 2.0 和 SP1 中的示例。运行 SP1 示例之前,请运行 v2.0.2114.0\Samples 文件夹中的 RemoveSamplesDB.cmd 脚本来删除 2.0 示例应用程序的实例。通过删除示例应用程序的实例,还可以避免在卸载 Notification Services 2.0 的过程中发生示例应用程序中断。 -------------------------------------- 2.4 卸载 Notification Services -------------------------------------- 卸载 Notification Services: 1. 运行 vn.n.n.n\Samples 文件夹中的 RemoveSamplesDB.cmd,删除所有 使用将卸载的 Notification Services 版本的示例。 2. 停止正在使用要删除的 Notification Services 版本的所有实例。要 停止实例,请运行下面的命令: net stop NS$ 3. 如果使用 SQL 身份验证,请运行 UninstallXPs.cmd 删除数据库组件。 卸载时不会提示输入 SQL Server 用户名和密码。您可以通过 UninstallXPs 脚本提供此信息。 4. 在“控制面板”中,单击“添加/删除程序”。 5. 选择“Microsoft SQL Server Notification Services 2.0 SP1”, 然后单击“删除”。 6. 按照屏幕上的指导继续操作。 *************************************************************** 3.0 将应用程序升级为 Notification Services 2.0 SP1 *************************************************************** 要将现有 Notification Services 应用程序升级为 Notification Services 2.0 SP1,必须升级运行这些程序的实例。 注意:以下示例显示了如何通过使用 Windows 身份验证连接到 SQL Server 来进行升级。如果使用 SQL Server 身份验证连接到 SQL Server,则必须 随 NSControl Disable、NSControl Enable、NSControl Upgrade 和 NSControl Register 命令使用 -sqlusername 和 -sqlpassword 参数。 升级在单台服务器上运行的实例(数据库位于同一台服务器或远程服务器): 1. 安装 Notification Services 2.0 SP1。如果实例和数据库位于不同的 服务器中,就必须在运行实例的位置安装引擎组件,并在运行数据库的 位置安装数据库组件。 如果使用多个数据库服务器,请确保在每台服务器上都安装数据库组件。 请按照 Notification Services 联机丛书中“在 SQL Server 的其他 实例中安装数据库组件”主题中所述,使用 InstallXP 命令进行安装。 2. 备份应用程序和实例数据库。 有关备份数据库的详细信息,请参阅 SQL Server 联机丛书。 3. 在运行实例的服务器上,必须首先使用 NSControl 2.0.2114.0 取消 注册实例: a. 在“开始”菜单中,指向“程序”,再指向“Microsoft SQL ServerNotification Services (2.0.2114.0)”,然后单击 “Notification Services 命令提示符”,打开命令提示符窗口。 b. 禁用实例。 示例:nscontrol disable -name StockInstance c. 停止 NS$ 服务。 示例:net stop NS$StockInstance d. 取消注册实例。 示例:nscontrol unregister -name StockInstance e. 如果尚未完成这些步骤,请卸载示例应用程序。 示例:cd Samples RemoveSamplesDB f. 关闭命令提示符窗口。 4. 然后,必须使用 Notification Services 2.0 SP1 版本的 NSControl 来注册并升级实例: a. 在“开始”菜单中,指向“程序”,再指向“Microsoft SQL ServerNotification Services 2.0 SP1”,然后单击 “Notification Services 命令提示符”,打开命令提示符窗口。 b. 注册实例。 示例:nscontrol register -name StockInstance -server MyDBServer -service -serviceusername "MyDomain\MyUserName" -servicepassword "" c. 升级实例。 示例:nscontrol upgrade -name StockInstance -server MyDBServer d. 授予 NS$ 服务帐户执行 SP1 扩展存储过程的权限: 示例:grantxpexec "MyDomain\MyUserName" e. 启用实例。 示例:nscontrol enable -name StockInstance f. 启动 NS$ 服务。 示例:net start NS$StockInstance 如果将实例向外扩展,即 NS$ 服务、独立事件提供程序 和订阅管理应用程序在多台服务器上运行,那么必须首先在一台服务器上 执行以上步骤,然后在其他所有服务器上取消注册,再重新注册实例。 将所有实例都升级为 SP1 之后,即可卸载 Notification Services 2.0.2114.0。 有关常用部署配置的指导,请从以下网址下载“Upgrading Applications to Notification Services 2.0 SP1”(将应用程序升级为 Notification Services 2.0 SP1)白皮书: http://go.microsoft.com/fwlink/?LinkId=16143。 *************************************************************** 4.0 产品和文档注释 *************************************************************** 以下是自 Notification Services 联机丛书发布之后出现的问题。 ---------------------------------------- 4.1 疑难解答:SSL 安全性错误 ---------------------------------------- 创建实例或运行 NS$ 服务时,如果事件日志接收到 SSL 安全性错误,则可能是 Notification Services 无法连接到 SQL Server 2000。下列问题可能会导致该错误: * 如果 Microsoft Windows 2000 计算机中安装了证书服务器,且证书 颁发机构 (CA) 名称与计算机的主机名相同(或将其作为前缀),则 连接 SQL Server 2000 可能会失败。 为了解决此问题,请获取最新版本的 SQL Server 2000 Service Pack。 有关详细信息,请转至 http://support.microsoft.com?kbid=302409。 * 如果与运行 SQL Server 的目标服务器或验证 Windows 凭据的服务器 之间的网络连接速度较慢,则 Notification Services 连接 SQL Server 可能会失败。该问题只有当运行 SQL Server 的计算机上装有安全套接 字层 (SSL) 证书、且该 SSL 证书满足执行加密的要求时才会出现。 为了解决此问题,请按照知识库文章 322144 中的指导进行操作: http://support.microsoft.com?kbid=322144。 ----------------------------------------------------- 4.2 运行 NSControl Upgrade 前禁用实例 ----------------------------------------------------- 运行 NSControl Upgrade 将 Notification Services 实例从标准版升级 到企业版之前,请先禁用实例,然后再卸载标准版。 请执行下列操作,从标准版升级到企业版: 1. 使用 NSControl Disable 命令禁用使用标准版的所有实例。 2. 使用 Net Stop 命令停止相应的 NS$ 服务。 3. 卸载 Notification Services 标准版。 4. 安装 Notification Services 企业版。 5. 使用 NSControl Upgrade 将使用标准版的所有实例升级到企业版。 6. 使用 NSControl Enable 启用所有已升级的实例。 7. 使用 Net Start 命令启动相应的 NS$ 服务。 ------------------------------------------------------- 4.3 EventCollector.Write 方法不返回值 ------------------------------------------------------- “EventCollector.Write 方法”主题指出该方法会返回一个整数值。 实际上 EventCollector.Write 并不返回值。更正后的信息如下所示: [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 不要对较大的批通知使用摘要传递 ------------------------------------------------------- 如果在应用程序定义文件 (ADF) 中将 值设置为 True 以便对某通知类启用摘要传递,请不要通过 元素设置自定义批通知大小。 值过高会使与 SQL Server 的连接数快速增加,从而消耗掉所有的可用内存。 ------------------------------------------------ 4.5 文档中错误的事件源名称 ------------------------------------------------ Notification Services 的事件都记录在 Windows 应用程序日志中。 Windows 事件查看器会在应用程序日志的“来源”列中显示事件的来源。 所有 Notification Services 事件的来源都是 NotificationServices。 “事件日志记录概述”和“选择监视工具”主题中将来源错误地说成了 NS$。 ------------------------------------------------------- 4.6 疑难解答:安装程序结束但未安装 Notification Services ------------------------------------------------------- 运行安装程序时,如果“InstallShield Wizard 完成”页面很快出现并 包含下列文本,可能是运行安装程序的帐户没有所需的权限: 在 Microsoft SQL Server Notification Services 完成安装之前向导 已中断。未对您的系统进行修改。以后要再完成安装过程,请重新运行 安装程序。 首先,请确保运行安装程序的帐户具有本地管理员特权。如果帐户具有 本地管理员特权,但在下列两种情况下计算机仍会出现该问题: * HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole 下存在 “DefaultAccessPermission”注册表项值。 * 安装程序的帐户不具有分配给组件服务的默认访问权限。 注意:默认情况下,HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Ole 下 没有 DefaultAccessPermission 注册表项值。该值由其他应用程序创建, 或在您使用组件服务工具将组或用户添加到 COM 默认访问权限中时创建。 将运行安装程序的帐户添加到组件服务中: 1. 在“开始”菜单中,单击“运行”。 2. 在“运行”框中,输入“Dcomcnfg.exe”,再单击“确定”。 3. 根据操作系统执行相应操作,显示“默认 COM 安全”选项卡: * 如果运行的是 Windows 2000 操作系统,请单击“默认安全机制” 选项卡。 * 如果运行的是 Windows XP 操作系统,请执行下列操作: a. 导航到“组件服务”\“计算机”\“我的电脑”。 b. 右键单击“我的电脑”,选择“属性”。 c. 单击“默认 COM 安全”选项卡。 4. 单击“编辑默认值”按钮。 5. 单击“添加”按钮,添加运行安装程序的帐户。 -------------------------------------------------------------- 4.7 事件消息指出找不到事件消息 DLL -------------------------------------------------------------- 如果一台计算机上安装了多个版本的 Notification Services,然后卸载了 其中一个版本,那么事件日志中的 Notification Services 消息可能会包含 下列文本,指出实例找不到事件消息 DLL。 事件 ID (####) 的描述在来源 (NotificationServices) 中 无法找到。本地计算机可能没有必要的注册信息或消息 DLL 文件来从远端计算机显示消息。 在上述文本后还显示有完整的事件消息文本;但消息中没有指向事件消息 Web 内容的链接。 为了解决此问题,请使用 NSControl Register 重新注册使用所安装版本 的所有 Notification Services 实例。此操作将修复指向事件消息 DLL 的指针。有关详细信息,请参阅 Notification Services 联机丛书中的 “重新注册实例”。 ------------------------------------------------------- 4.8 加密参数注册表项值是字符串 ------------------------------------------------------- NSControl Create、NSControl Update 和 NSControl Register 命令均 有一个可选的“argumentkey”参数,它指定了用于加密传递通道和事件 提供程序参数的注册表项值。注册表项值必须是字符串。如果字符串中 包含空格,请将字符串放到引号中。有关详细信息,请参阅 Notification Services 联机丛书中的“配置参数加密”主题。 ----------------------------------------------- 4.9 禁用订阅者会禁用实例 ----------------------------------------------- 如果想通过 NSControl Disable 命令仅禁用实例的订阅者,NSControl 会禁用整个实例以及所有以该实例作为宿主的应用程序。 为了解决该问题,请使用下列两种方法之一: * 禁用订阅者组件后,使用 NSControl Enable 重新启用该实例的其他 所有组件: nscontrol enable -n -distributor -events -generator –subscriptions * 在禁用订阅者的同时禁用另一组件,然后再重新启用该组件: nscontrol disable -n -generator -subscribers nscontrol enable -n -generator 您可以使用 NSControl Status 命令检查实例的状态: nscontrol status -n --------------------------------------------------------- 4.10 不记录由于内容格式化错误而导致的传递失败 --------------------------------------------------------- 如果由于内容格式化错误(如无效的 XSLT 文件)而导致通知传递失败, 则不会将通知记录为失败。这将导致下列错误结果: - 分发日志(可以从 NSNotificationDistribution 视图中查看) 中不包括由于内容格式化错误而导致失败的通知。 - NSDiagnosticNotificationClass 存储过程将某些失败的通知显示为 “尚未传递”(在“NotificationsNotYetDelivered”列中),这是 因为这些通知在分发日志中未标记为“失败”。 --------------------------------------------------------- 4.11 在群集中运行 Notification Services 时, 值必须 是群集名称 --------------------------------------------------------- 在创建 Notification Services 应用程序时,必须指定分发服务器、生 成器和宿主事件提供程序组件的运行位置。为了实现这一点,请在 ADF 中为每个 节点中 的 元素提供值。NSControl 将此数据加载到应用程序数据 库中。 NS$ 服务启动之后,会确定其运行位置(宿主名称), 然后将此值与每台分发服务器、宿主事件提供程序和生成器的 值进行比较。如果宿主名与 值匹配,此 服务将启动组件。不匹配组件将被置于“启用待定”状态。 该服务将按如下规则确定宿主名称: * 对于非群集服务器,宿主名使用计算机名即可。 * 对于群集服务器,宿主名称是群集名称(并非节点名或虚拟服务器名称)。 因此,在群集中运行 Notification Services 时, 值必须 是群集名称。 ---------------------------------------------------------- 4.12 SP1:NSControl Create 启用跨数据库所有权链接;需要 Sysadmin 特权 ---------------------------------------------------------- SQL Server 2000 SP3 提供了用于配置跨数据库所有权链接的选项。安装 SP3 时,默认情况下会对所有用户禁用跨数据库所有权链接。安装完毕之 后,可以使用 sp_dboption 系统存储过程对单个数据库启用跨数据库 所有权链接。 一个 Notification Services 实例使用两个或两个以上数据库:一个实 例数据库以及一个或多个应用程序数据库。这些数据库需要跨数据库所有 权链接,以允许 Notification Services 存储过程访问实例数据库和应 用程序数据库中的对象。 运行 NSControl Create 时,NSControl 尝试打开实例数据库和应用程序 数据库的跨数据库所有权链接。如果 SQL Server 2000 数据库是 SP3 之前的版本,就会忽略跨数据库所有权链接命令。 只有 sysadmin 固定服务器角色的成员才能配置跨数据库所有权链接。 结果就导致只有 sysadmin 服务器角色的成员运行 NSControl 时,才能 打开跨数据库所有权链接。作为 dbcreator 固定服务器角色成员的用户 可以运行 NSControl Create,但无法打开实例数据库和应用程序数据库 的跨数据库所有权链接。 因此,如果您不是 sysadmin 服务器角色的成员,若要运行 NSControl Create,那么在您运行 Notification Services 实例之前,必须有一个 sysadmin 服务器角色成员对实例数据库和每个应用程序数据库启用了 跨数据库所有权链接。 有关跨数据库所有权链接的其他信息,请参阅 SQL Server 2000 联机 丛书(更新 - SP3)。下列主题说明了跨数据库所有权链接: - 跨数据库所有权链接的后向兼容性 - 使用所有权链接 - sp_dboption - 设置配置选项 可以从以下网址下载 SQL Server 2000 联机丛书(更新 - SP3): http://go.microsoft.com/fwlink/?LinkId=16144。 ------------------------------------------------------------ 4.13 SP1:使用 XSLT 内容格式化程序写入纯文本 ------------------------------------------------------------ 在 Notification Services 2.0 中,XSLT 内容格式化程序总是写入有效 的 XML。因此,它将下列字符串作为其实体引用写入:> (>)、< (<)、 ' (')、" (") 和 & (&)。 在 SP1 中,XSLT 内容格式化程序可以写入纯文本,这些纯文本将实体 引用转换为等价的字符。可以使用 xsl:output 元素配置文本输出: 下列示例中的“NoOp.xslt”文件其输出方法被设置为文本,并添加了 一些文本以说明其实体引用的转换过程。 Today's Notifications: 在 SP1 中进行了更改,改变了 XML 输出的格式。默认情况下,XSLT 内容格式化程序写入 XML 时不带回车或缩进。您可以使用“xsl:output” 元素的“indent”属性自动缩进 XML。 如果事件数据包含保留字符或实体引用,您必须清楚以下事情: * 如果事件数据包含实体引用或 XML 片段,请将内容格式化程序的 DisableEscaping 属性设置为 True,以便防止内容格式化程序过度 转换数据(例如将 & 转换为 &amp;)。 * 如果事件数据包含保留字符(如 &),请将内容格式化程序的 DisableEscaping 属性设置为 False,以便内容格式化程序在进行 最终转换之前,将保留字符转换为有效的 XML。 有关 xsl:output 元素的详细信息,请浏览 MSDN 联机站点中的下列网页: http://go.microsoft.com/fwlink/?LinkId=16145。 --------------------------------------------------------- 4.14 SP1:对 NSDiagnosticFailedNotifications 存储过程的更改 --------------------------------------------------------- 在 Notification Services 2.0 中,NSDiagnosticFailedNotifications 存储过程不返回失败通知。在 Notification Services 2.0 SP1 中, 已解决了此问题。 对每个失败的传递尝试,NSDiagnosticFailedNotifications 都会返回 一行。如果一个通知失败多次,将在结果集中显示关于该通知的多行。 请注意,结果集中的列已发生变化。 添加了下列两列: - DeliveryRequestTime - SentTime DeliveryRequestTime 是分发服务器将通知提交到传递协议以便传递的 时间。只有 ADF 中的 分发服务器日志 记录选项为“true”时,才会显示该值。 SentTime 是传递协议报告通知的传递状态的时间。 请注意,报告显示所有失败通知时都会附带一个 SentTime 值,此值介于 运行 NSDiagnosticFailedNotifications 时提供的 StartDateTime 值和 EndDateTime 值之间。 删除了下列两列: - NumberOfDeliveryAttempts - LastFailureTime 有关说明更新的存储过程的文档,请访问 Microsoft 产品支持服务网站: http://support.microsoft.com?kbid=818352。 --------------------------------------------------------- 4.15 使用通过 .NET Framework 版本 1.1.4322 构建的客户组件 --------------------------------------------------------- Notification Services 2.0 SP1 是使用 .NET Framework 版本 1.0.3705 构建的。默认情况下,Notification Services 试图加载和使用此版本。 如果客户组件是使用 .NET Framework 版本 1.1.4322 构建的,也将加载 此版本。如果 Notification Services 和其组件使用的 .NET Framework 的版本不同,类库之间的不同可能会导致应用程序错误。例如: * 2009:Notification Services failed to instantiate the event provider. (Notification Services 实例化事件提供程序失败。) * 6005: The assembly does not contain the required content formatter class. (程序集中没有包含必需的内容格式类。) 为了解决这些错误,请使用 .NET Framework 版本 1.0.3705 构建客户组件。 为了实现这一点,请将包含 1.0.3705 程序集的目录添加到对客户组件项目 的引用路径中。 如果必须使用 .NET Framework 1.1.4322 构建客户组件,也可以强制 Notification Services 使用同一版本。为了实现这一点,请在 NSService.exe.config 文件中添加一个 节点,该文件位于 Notification Services 的 vN.N.N.N\Bin 文件夹中。下面是包含 节点的文件示例: 元素限制 Notification Services 可以使用的 .NET Framework 的版本。所列出的版本的顺序确定了 Notification Services 试图加载 .NET Framework 的各版本的顺序。在上面的示例中,Notification Services 将首先试图加载 .NET Framework 版本 1.1.4322。如果该版本不可 用,Notification Services 将试图加载 .NET Framework 版本 1.0.3705。 必须重新启动 NS$ 服务,才能应用对 NSService.exe.config 所做的更改。