关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » SQL Server »在SQL Server 2005中编写sp_lock系统存储过程

    在SQL Server 2005中编写sp_lock系统存储过程

    2015-11-27 00:00:00 出处:ITJS
    分享

    做为系统存储过程,sp_lock可以用来了解服务器的运行情况,通过查看系统的锁定信息诊断SQL Server可能出现的问题。不过系统存储过程sp_lock本身存在一些缺陷。对于数据库管理新手来说,其返回的结果不够直白,花费了大量的工作来显示系统中哪个会话造成了最多锁定,却并没有提供多少关于这些对象或会话的相应详细信息。虽然我们可以创建自定义的脚本来查看这些信息,但是返回的结果往往过于复杂,而充其量能返回一些质量低下的信息。也有其他的一些系统表可以用来查看锁定信息,例如syslockinfo,但信息的细节同样不够明了。此外,sp_lock和syslockinfo还有一个更大的问题,那就是他们都是“不建议使用的特性”,所以将来的SQL Server版本中可能不再包含这些特性。SQL Server 2005提供的新的动态管理视图包含了大量锁定细节,并使我们能够将锁定信息关联起来,看起来可以更一目了然。

    sys.dm_tran_locks

    新的动态视图sys.dm_tran_locks能够返回系统中当前活动的锁管理器资源信息。这个视图返回的信息类型和sp_lock一样,但提供了更多细节。关键是这是一个视图,允许数据库管理员轻松的将其连接到其他表。

    自定义sp_lock例子

    USE MASTER

    接下来,更新表中某事务的记录并使该事务保持开放状态。在更新过程中,该事务将持有对这些记录的锁定。然后添加WITH(HOLDLOCK)锁提示,确保该数据库的事务隔离水平不会影响到我们的测试。

    BEGIN TRANSACTION UPDATE TOP(2000) LockMyData WITH(HOLDLOCK) SET

    NumberField = NumberField + IDCol

    另起一个独立的查询会话,执行我们之前创建的sp_Lock_Detail存储过程。我们将在与之前发布的UPDATE语句相同的数据库环境下执行该存储过程。

    EXECUTE sp_Lock_Detail

    我们的返回结果超过了2000行,表明发布的UPDATE指令使用了行级锁(KEY)来发布该指令。

    该存储过程生成了很多有用的数据。我们可以立刻就能看到谁发布了这些指令、哪些程序被用来发布这些指令、锁的类型等等信息。假如我们在原始UPDATE指令运行的时候运行这条指令,那么我们就能够看到引起锁定的确切指令了。

    总结

    系统存储过程是很有用的工具,使我们能够在一个数据库中编写存储过程,然后在其他数据库环境下运行该过程。本文的sp_Lock_Detail只是一个例子,告诉我们如何编写自定义的系统存储过程来监控自己的数据库。系统存储过程的用途还有很多,包括获取存储在数据库中所有表的大小分配,同时生成用来存储SQL语句以节省编写代码的时间等等。有兴趣的读者可以自己尝试,相信您一定会有所收获的。

    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    正版 Windows 11产品密钥怎么查找/查看?

    还有3个月,微软将停止 Windows 10 的更新

    Windows 10 终止支持后,企业为何要立即升级?

    Windows 10 将于 2025年10 月终止技术支持,建议迁移到 Windows 11

    Windows 12 发布推迟,微软正全力筹备Windows 11 25H2更新

    Linux 退出 mail的命令是什么

    Linux 提醒 No space left on device,但我的空间看起来还有不少空余呢

    hiberfil.sys文件可以删除吗?了解该文件并手把手教你删除C盘的hiberfil.sys文件

    Window 10和 Windows 11哪个好?答案是:看你自己的需求

    盗版软件成公司里的“隐形炸弹”?老板们的“法务噩梦” 有救了!

    IT头条

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    液冷服务器概念股走强,博汇、润泽等液冷概念股票大涨

    01:17

    亚太地区的 AI 驱动型医疗保健:2025 年及以后的下一步是什么?

    16:30

    智能手机市场风云:iPhone领跑销量榜,华为缺席引争议

    15:43

    大数据算法和“老师傅”经验叠加 智慧化收储粮食尽显“科技范”

    15:17

    技术热点

    商业智能成CIO优先关注点 技术落地方显成效(1)

    用linux安装MySQL时产生问题破解

    JAVA中关于Map的九大问题

    windows 7旗舰版无法使用远程登录如何开启telnet服务

    Android View 事件分发机制详解

    MySQL用户变量的用法

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。