SQL SERVER 存储过程使用技巧

查询数据

我们在做项目的时候,在想要获得存储过程的执行结果,相信部分的小伙伴都是通过执行项目来看结果,这种方式很难获得我们想要的结果。
也不知道存储过程具体的执行流程是怎么样的,在对于我们在看别人编写的存储过程的时候,只知其一未知其二。
只知道怎么运行的只看到了结果,并不了解存储过程的执行流程,今天我给大家分享一个比较快捷便利的查询方式。

  1. SQL语法:
declare
Id nvarchar(32)='1',
Name nvarchar(32)='猫先生'
begin
select * from UserName where Id=@Id AND Name=@Name
end
提示:存储过程里面用到了 AS 或者 WITH ENCRYPTION 一定要去掉哦!

只要在查询工具里面直接执行就可以得到你的你想要的结果了,不需要再去看程序了,通过这种方式清楚的知道这个存储过程传递那些参数是怎么运行起来的。

  1. 查看执行存储过程

SQL SERVER 存储过程抛异常 sql server存储过程调用_存储过程


1.查询工具,找到工具-SQL server Profiler点击进去输入用户和密码连接。

这里的用户就是你连接数据库的用户名和密码。

SQL SERVER 存储过程抛异常 sql server存储过程调用_存储过程_02


弹出以下对话框,点击运行即可。

SQL SERVER 存储过程抛异常 sql server存储过程调用_存储过程_03


2.运行过户出现这个界面,当看到红色箭头标记处为方块红色,表示已经在进行监视了,这里就不需要管它。

SQL SERVER 存储过程抛异常 sql server存储过程调用_sqlserver_04


3.最小化,后台运行这个监视工具,这个时候就可以进入到程序里面,随便查看一个功能运行即可。4.运行完成之后,回到查询工具这个界面,把这个监视停止掉,按住键盘上的ctrl+F,弹出查找的界面输入调用到的存储过程名称,点击查找上一个,监视工具就会把执行过的存储过程,显示到厦门的空白处,里面就能看到存储过程名称、调用的参数、和传递的参数非常的详细。

SQL SERVER 存储过程抛异常 sql server存储过程调用_SQL_05

RAISERROR类型转换弹出异常

相信很多的小伙伴,会遇到这样的问题,若参数的是时间类型的时候,在进行存储过程调试的时候,raiserror(@date,16,1);
就会抛出异常,提示转换失败,没法得到调试的结果。
这里直接上SQL:

@Date datetime=null
declare @Msg nvarchar(132)
set @Msg=cast(@Date as nvarchar)
raiserror(@Msg,16,1);

存储过程加锁

create procedure 存储过程名称
参数定义....
WITH ENCRYPTION

优化SQL

select 字段1,.... from a with (nolock)
left join b with (nolock) on a.id=b.id
使用with (nolock)数据表不上锁

SQL死锁

查询数据库所存在的死锁条数:
sp_who_lock

杀死死锁
KILL 50(行数)

查询数据库死锁的数据表
select request_session_id spid,OBJECT_NAME(resource_associated_entity_id) tableName
from sys.dm_tran_locks where resource_type=‘OBJECT’