T-SQL调试器重返SQL Server 2008

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 问题:如果你还记得用SQL Server 2000工作的情形,那么你可能会记得在查询分析器中调试程序(存储过程、UDF和触发器)的样子,因为一个调试工具是可以使用它的。从SQL Server 2005开始,查询分析器和企业管理就合并成SSMS。

问题:如果你还记得用SQL Server 2000工作的情形,那么你可能会记得在查询分析器中调试程序(存储过程、UDF和触发器)的样子,因为一个调试工具是可以使用它的。从SQL Server 2005开始,查询分析器和企业管理就合并成SSMS。虽然这个单一界面简化了使用SQL Server 的过程,但是一个主要的缺点是,它不允许你从那里调试程序。要达到这个目的,你需要安装Visual Studio(企业和专业)版本,在你的开发机器上允许你调试一个程序。安装Visual Studio的要求是数据库开发人员和数据库管理人员可能不愿意去做,因为它要求额外的费用来支付Visual Studio 证书并且在安装之后把其它压力放在物理盒中。

  SSMS中的调试性能是用户长期追求的一个功能,最终Microsoft SQL Server团队决定在SQL Server 2008中提供这个功能。有了这个功能,你可以逐行浏览你的代码,查看程序中变量的当前状态,而在一个输出窗口中你可以观察代码正在做什么,在错误窗口中,你可以向前一行浏览也可以向后查看,发现系统对象如访问堆和线程,除此之外,你甚至可以安置“断点”然后告诉调试器运行代码直到该点在停止。

  实例

  你可以通过点击查询工具栏中的Debug按钮或者点击Debug菜单中的Start Debugging或者按ALT+F5来启动调试器。

  在下面的图像中,我在一个调试模式下执行代码;你会注意到虽然本地窗口的细节只是看得见的,但是底下一些窗口显示了T-SQL调试器中当前范围内本地变量的信息。

  

  图一

  让我们看看另一个例子。本例子的脚本在下面表格中提供,一个程序调用另外一个程序,因此,在执行过程中如果你看看Call Stack窗口,你会得到当前的执行位置和执行如何从最初的编辑器窗口通过任何T-SQL路径(函数、存储过程或者触发器)传递到如下显示的当前执行位置。

  脚本 #1: 创建一个调用其他程序的程序

      CREATE PROCEDURE PROC1

  AS

  BEGIN

  PRINT 'A'

  PRINT 'B'

  EXECUTE PROC2

  END

  GO

  CREATE PROCEDURE PROC2

  AS

  BEGIN

  PRINT 'C'

  PRINT 'D'

  END

  GO

  EXECUTE PROC1

  GO

  图二

  注意事项

  SSMS必须在一个Windows/SQL Server账户下运行,该账户是系统管理员固定服务器角色中的一员,否则,你将得到类似于下图的错误信息:

  

  图三

  当SSMS正在从一个不同计算机上的数据库引擎实例中运行时,如果你在运行T-SQL调试器,你必须通过Windows防火墙控制面板应用程序在两个计算机上启用程序和端口例外。

  微软建议T-SQL代码应该在一个开发/测试服务器上调试,而不是在一个生产服务器中,首先这是因为它要求成员必须作为系统管理员固定服务器角色的一部分来调试,其次是因为当你调试和研究时,它可能会保存资源更长时间。

  限制

  如果你甚至从SQL Server 2008 SSMS连接到SQL Server 2005,那么你可能不能调试你的程序并得到下面的错误,这种情况会发生,那是因为T-SQL调试器包含服务器端和客户端的组件,因此,概括来说,它只能与SQL Server 2008工作到这种程度。

  

  图四

  T-SQL调试器不支持设置断点情形或者触及法律的Microsoft Visual Studio功能。

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
2月前
|
SQL 存储 关系型数据库
关系型数据库SQLserver基本 SQL 操作
【7月更文挑战第28天】
32 4
|
24天前
|
SQL 运维 监控
SQL Server 运维常用sql语句(二)
SQL Server 运维常用sql语句(二)
20 3
|
24天前
|
SQL XML 运维
SQL Server 运维常用sql语句(三)
SQL Server 运维常用sql语句(三)
11 1
|
29天前
|
SQL 关系型数据库 MySQL
SQL数据库和 SQLserver数据库
【8月更文挑战第19天】SQL数据库和 SQLserver数据库
44 2
|
17天前
|
SQL 关系型数据库 MySQL
SQL Server、MySQL、PostgreSQL:主流数据库SQL语法异同比较——深入探讨数据类型、分页查询、表创建与数据插入、函数和索引等关键语法差异,为跨数据库开发提供实用指导
【8月更文挑战第31天】SQL Server、MySQL和PostgreSQL是当今最流行的关系型数据库管理系统,均使用SQL作为查询语言,但在语法和功能实现上存在差异。本文将比较它们在数据类型、分页查询、创建和插入数据以及函数和索引等方面的异同,帮助开发者更好地理解和使用这些数据库。尽管它们共用SQL语言,但每个系统都有独特的语法规则,了解这些差异有助于提升开发效率和项目成功率。
82 0
|
2月前
|
SQL 存储 监控
|
2月前
|
SQL 存储 网络安全
关系数据库SQLserver 安装 SQL Server
【7月更文挑战第26天】
44 6
|
1月前
|
SQL 安全 Java
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client
143 0
|
1月前
|
SQL 运维 Oracle
SQL Server 项目中 SQL 脚本更新、升级方式,防止多次重复执行
SQL Server 项目中 SQL 脚本更新、升级方式,防止多次重复执行
25 0
|
SQL XML 数据格式
SQL点滴26—常见T-SQL面试解析
原文:SQL点滴26—常见T-SQL面试解析   它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练。sql语句可以解决很多的复杂业务,避免过多的项目代码,下面几个语句很值得玩味。
701 0