WEB开发网
开发学院数据库MSSQL Server 剖析SQL Server 2005查询通知之基础篇 阅读

剖析SQL Server 2005查询通知之基础篇

 2006-11-18 09:16:01 来源:WEB开发网   
核心提示: 注意:对于客户端应用程序来说,应该限制你的查询通知使用—不多于十个并发用户,剖析SQL Server 2005查询通知之基础篇(4),对于较小规模的情况而言,下拉式列表框是另一种典型的数据集;此时该数据集更新的次数并不如请求的次数多,它运行一个SQL Server 2005 W

注意:对于客户端应用程序来说,应该限制你的查询通知使用—不多于十个并发用户。

对于较小规模的情况而言,下拉式列表框是另一种典型的数据集;此时该数据集更新的次数并不如请求的次数多。产品列表、州列表、国家列表、供应商、销售人,甚至更多不太需要频繁改变的信息正是使用通知的较好候选。

四. 为使用查询通知作准备

因为默认情况下SQL Server 2005处于高度安全的状态,所以你需要“打开”一些功能才能使用查询通知。首先,你要使用的每一个数据库都需要启动Service Broker功能。为此,你可以在T-SQL中使用如下命令实现:

USE mydatabase
ALTER DATABASE mydb SET ENABLE_BROKER

另外,你需要授予一些SQL Server权限以允许非管理员帐户能够参与使用查询通知。

五. SqlDependency.Start和Stop

SqlDependency和SqlCacheDependency都要求,在任何通知请求前先调用静态方法SqlDependency.Start()。这个方法负责创建一个SqlConnection以实现在数据改变时接收通知。注意,你仅需要在一个应用程序的生命周期的开始建立这些内容。例如,在一个ASP.NET应用程序中,global.asax文件的Application_Start事件处理器就是实现这一功能的好地方。

注意,对包含在通知中的每一个连接都应该调用Start方法。因此,如果你在应用程序中存取多个数据库,那么你需要为每一个数据库调用Start。在下列示例中,有一个针对Pubs数据库的连接串pubsConn,它在这个应用程序的web.config文件中定义。

为了切断这个连接,你可以使用SqlDependency.Stop(),这也是一个静态方法。

Sub Application_Start(ByVal sender as Object, _
ByVal e as EventArgs)
System.Data.SqlClient.SqlDependency.Start _
(System.Configuration.ConfigurationManager. _
Connectionstrings("pubsConn").ConnectionString)
End Sub
Sub Application_End(ByVal sender as Object,
ByVal e as EventArgs)
System.Data.SqlClient.SqlDependency.Stop _
(System.Configuration.ConfigurationManager. _
Connectionstrings("pubsConn").ConnectionString)
End Sub

如果你在调用Start和Stop的同时观察SQL Server Profiler,那么你会看到许多有趣的信息。当调用Start时,应用程序运行一个查询以确保支持Service Broker,然后创建一个存储过程备以后用于清除在Service Broker基础结构中的SqlDependency队列和服务。最后,它运行一个SQL Server 2005 WaitFor命令,该命令负责查询在Notification Service部分的入口。这就是如果你使用ADO.NET的低级SqlNotificationRequest对象的话所有你需要显式完成的事情。

上一页  1 2 3 4 5 6  下一页

Tags:剖析 SQL Server

编辑录入:coldstar [复制链接] [打 印]
赞助商链接