快速业务通道

SQL Server自带的用户自定义函数

作者 佚名技术 来源 数据库编程 浏览 发布时间 2012-03-22




技巧     
上述SQL脚本代码中的

SELECT * FROM sys.dm_exec_cursors(0)

语句用于返回当前用户进程的游标信息。该游标的参数为spid,即当前用户进程的会话ID。开始时,由于还没有创建任何游标,因此使用上述命令时返回的记录为空。接下来声明了一个在第一章中创建的游标,再次使用上述命令查看当前的游标使用状态时,将返回一条与该游标相关的信息记录。当执行完Deallocate命令释放该游标后,再次执行上述SQL脚本,此时由于游标已被释放,因此会再次返回空记录。  

提示     
比较CLOSE cEmploy和DEALLOCATE cEmploy两条Transact-SQL语句的执行效果可以发现,关闭一个游标并没有彻底地释放游标,实际上该语句的功能只是释放了该游标所关联的数据库资源,如数据集等。如果想彻底释放一个游标占有的所有资源,应使用DEALLOCATE命令。详细内容在第1章中已进行了详细介绍。  

【示例7】动态管理函数dm_exec_sessions的应用。

动态管理函数dm_exec_sessions用于返回当前与SQL Server数据库服务器连接的会话信息。例如,如果想列出与登录当前SQL Server数据库服务器的所有账号相关的会话连接信息,可按照下面步骤进行设置。

(1) 在【查询编辑器】中输入下面的Transact-SQL脚本代码:

SELECT login_name, COUNT(session_id) as session_count FROM sys.dm_exec_sessions GROUP BY login_name


(2) 单击【执行】按钮,其结果如图4.29所示。


图4.29 运行结果


(3) 由于当前只有账号sa登录了SQL Server数据库服务器,因此只有一条记录。如果想进一步查看与账号sa相关的所有会话的详细信息,可以在【查询编辑器】中输入下面的Transact-SQL脚本代码:

SELECT *  FROM sys.dm_exec_sessions

(4) 单击【执行】按钮,其结果如图4.30所示。


硕图4.30 运行结果



提示     
利用SQL Server 2005提供的动态管理视图和函数可以方便地查看SQL Server 2005中各实例的相关信息,便于数据库管理人员了解当前数据库进程的阻塞信息(使用sys.dm_exec_requests)以及用户登录情况(sys.dm_exec_sessions)等,详细内容请参见Microsoft提供的联机帮助文档。  

【示例8】fn_dblog函数应用。
除上面介绍的动态管理函数之外,SQL Server还提供了大量常规的函数,例如,函数fn_dblog可以将SQL Server的事务日志以数据表记录的形式返回给用户。该函数的使用形式如下所示。

::fn_dblog(@StartingLSN, @EndingLSN)

其中,该函数的两个参数分别表示起始的LSN号和结束的LSN号。默认情况下,可以使用空值。如果将@StartingLSN设置为空,则表示从首日志记录开始查询,如果@EndingLSN为空值,则表示一直查询到日志的尾记录为止。

提示     
LSN,是Log Sequence Number,即日志序列号的简称,SQL Server使用事务日志来记录发生在数据库服务器的事务。  

如果想查看与数据库Northwind相关的日志记录,可以按照下面步骤进行设置。
(1) 在【查询编辑器】中输入下面的Transact-SQL语句:

USE Northwind
SELECT * FROM ::fn_dblog('''', '''')
GO

(2) 单击【执行】按钮,与数据库Northwind相关的每条日志信息将以数据集的形式返回,如图4.31所示。


图4.31 日志信息


(3) 此外,也可以像设计其他普通查询语句那样设置查询条件,如下所示:

USE Northwind
SELECT * FROM ::fn_dblog('''', '''') WHERE [Begin Time] >= ''02/01/07''
GO

(4) 单击【执行】按钮,其运行结果如图4.32所示。


图4.32 运行结果


提示     
使用fn_dblog可以监视诸如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号