T-SQL调试器重返SQL Server 2008

本文涉及的产品
云数据库 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
目录
相关文章
|
13天前
|
SQL 人工智能 算法
【SQL server】玩转SQL server数据库:第二章 关系数据库
【SQL server】玩转SQL server数据库:第二章 关系数据库
52 10
|
13天前
|
SQL 算法 数据库
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
【SQL server】玩转SQL server数据库:第三章 关系数据库标准语言SQL(二)数据查询
78 6
|
1天前
|
SQL 关系型数据库 MySQL
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
:“You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
6 0
|
8天前
|
SQL 安全 网络安全
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
IDEA DataGrip连接sqlserver 提示驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的解决方法
19 0
|
13天前
|
SQL 存储 数据挖掘
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
服务器数据恢复环境: 一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。 在windows服务器内装有SqlServer数据库。存储空间LUN划分了两个逻辑分区。 服务器故障&初检: 由于未知原因,Sql Server数据库文件丢失,丢失数据涉及到3个库,表的数量有3000左右。数据库文件丢失原因还没有查清楚,也不能确定数据存储位置。 数据库文件丢失后服务器仍处于开机状态,所幸没有大量数据写入。 将raid5中所有磁盘编号后取出,经过硬件工程师检测,没有发现明显的硬件故障。以只读方式将所有磁盘进行扇区级的全盘镜像,镜像完成后将所
数据库数据恢复—RAID5上层Sql Server数据库数据恢复案例
|
17天前
|
SQL 数据安全/隐私保护
SQL Server 2016安装教程
SQL Server 2016安装教程
19 1
|
17天前
|
SQL 安全 Java
SQL server 2017安装教程
SQL server 2017安装教程
15 1
|
SQL XML 数据格式
SQL点滴26—常见T-SQL面试解析
原文:SQL点滴26—常见T-SQL面试解析   它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练。sql语句可以解决很多的复杂业务,避免过多的项目代码,下面几个语句很值得玩味。
688 0
|
SQL XML 数据格式
SQL点滴26—常见T-SQL面试解析
它山之石可以攻玉,这一篇是读别人的博客后写下的,不是原原本本的转载,加入了自己的分析过程和演练。sql语句可以解决很多的复杂业务,避免过多的项目代码,下面几个语句很值得玩味。    1. 已经知道原表year salary2000 10002001 20002002 30002003 4000怎么查询的到下面的结果,就是累积工资year salary2000 10002001 30002002 60002003 10000 思路:这个需要两个表交叉查询得到当前年的所有过往年,然后再对过往年进行聚合。
579 0
|
1月前
|
SQL 数据库 数据安全/隐私保护
Sql Server数据库Sa密码如何修改
Sql Server数据库Sa密码如何修改