zoukankan      html  css  js  c++  java
  • SQLSERVER2005调试存储过程跟函数

    SQLSERVER2005调试存储过程跟函数

    以前一直用Toad for SqlServerDatabase.Net 来调试SQL2005的存储过程跟函数

    Toad for SqlServer介绍以及下载:toad for sqlserver5.7

    Database.Net 介绍以及下载:Database .NET 8.0 发布,数据库管理工具

    今日发现原来上面两个工具的功能,微软的Visual Studio也可以做到

    本来微软自家的Visual Studio就支持调试SQLSERVER的存储过程跟函数,我竟然用了第三方工具,而且这些第三方工具也不是很好用

    微软在SQLSERVER Management Studio2008里才集成了TSQL调试功能,那么SQL2005只有用VS来调试了


    幸亏VS调试TSQL也不是很复杂

    我的环境:VS2008 TeamSystem SQL2005 个人开发版 ,   Windows7 Ultimate

    我使用的工具还是比较落后

    step1:打开Visual Studio2008,然后点击菜单 视图-》服务器资源管理器

    最好以管理员身份登录操作系统,打开VS的时候一般就以管理员的身份运行了

    step2:在数据连接那里 右键-》添加连接

    step3:数据源那里选择SQLSERVER就可以了

    step4:选择你本地的数据库不要选择局域网或者广域网里的数据库,因为Windows安全问题的原因你是调试不了的只能执行

    joe是我的笔记本电脑的计算机名,joe-homepc是局域网里另一台计算机的计算机名

    选择好了之后点击“测试连接” ,没有问题就可以点击“确定”按钮了

    step5:打开存储过程或者函数的树节点,然后找一个存储过程或者函数进行调试

    step6:调试函数,调试的时候无论是存储过程还是函数,都会直接跳过变量定义部分进入函数或存储过程主体来执行

    只有当TSQL语句运行的时候才会中断到断点的地方

     

    step7:调试存储过程

     当你调试远程SQL服务器的时候,VS就会报错,就像你写C#的时候是调试不了远程电脑上的代码的

     

    不过个人觉得调试如果能看到表数据就最好了,调试的时候varchar nvarchar int  datetime这些数据都可以看到

    但是表的内容,无论是临时表,表变量,表都是无法看到数据的,如果你想查看中途我插入到@temp表变量里的数据是看不到的

    包括Toad for SqlServer 这些工具也是没办法看到的,个人觉得这是一个缺点


    最后给大家一个函数,这个函数的作用就是切割字符串,大家可以用来调试一下

     1 CREATE     FUNCTION [dbo].[SplitString] (@string varchar(6000))
     2 RETURNS @temp TABLE(substr varchar(30))
     3 AS
     4 begin
     5    -- 用法 select * from SplitString('1, 2, 3')
     6 
     7    declare @str varchar(6000)
     8    declare @i int
     9 
    10    set @i=0
    11    while(@i<len(@string))
    12    begin    
    13        if(substring(@string,@i,1)=',')
    14         begin
    15             select @str=substring(@string,1,@i-1)
    16             set @string=substring(@string,@i+1,len(@string))
    17                   set @i=1
    18             insert into @temp values(ltrim(@str))
    19     
    20            end
    21        else
    22            begin 
    23             set @i=@i+1
    24            end
    25    end
    26 
    27    insert into @temp values(ltrim(@string))
    28 
    29    RETURN
    30 end
  • 相关阅读:
    Redis入门到高可用(十九)——Redis Sentinel
    Redis入门到高可用(十八)—— 主从复制
    动态代理
    Redis入门到高可用(十七)—— 持久化开发运维常见问题
    Redis入门到高可用(十六)—— 持久化
    mybatis批量操作
    Redis入门到高可用(十五)—— GEO
    Redis入门到高可用(十五)—— HyperLogLog
    Redis入门到高可用(十四)—— bitmap
    Redis入门到高可用(十三)—— 发布订阅
  • 原文地址:https://www.cnblogs.com/lyhabc/p/2972305.html
Copyright © 2011-2022 走看看