zoukankan      html  css  js  c++  java
  • 写出易于调试的SQL

    1.前言

    相比高级语言的调试如C# , 调试SQL是件痛苦的事 . 特别是那些上千行的存储过程, 更是我等码农的噩梦.

    在将上千行存储过程的SQL 分解到 C# 管理后, 也存在调试的不通畅, 如何让调试流畅些呢, 请看后续

    2.常见调试

    2.1 通常在Dapper 里面一个断点下去, 抓到类似如下SQL:

    各种@符号, 需要手工替换后才能调试(麻烦), 要是能抓到最终SQL就好了

    2.2 庆幸的是可以通过SQLServer Profiler 来抓到最终SQL

    但是生产环境中的SQLServer,  并发执行的SQL 非常多, 如上图所见, 在一大堆SQL 里面找到你刚才执行的SQL也比较麻烦, 即使可以Ctrl + F 调出搜索框来搜索, 也要想个好的关键字来搜索 , 麻烦.

    3.解决方案

    既然我们想要最终的SQL , 为毛不在丢给Dapper 执行前, 就已经是最终SQL了呢, 上工具代码:

    调用示例:

    这样丢给Dapper 执行的SQL 始终是最终SQL, 就不用煞费苦心去抓了.

    PS: 有人可能会质疑这样替换的效率,不用担心已测试 , C#的字符串替换是非常快的, 上面的调用实例, 当时的测试结果是 微妙和纳秒级别, 有兴趣的看管可以再测试.

    4. 最后

    现在丢给Dapper执行的不再是 充满@参数的SQL ,  而是一个替换好的最终SQL .

    这样当老板隔老远吼道你说: 小蒋, 你tm 有个XX bug ,赶紧看看 .

    你可以不慌不忙的在 Dapper Query处打个断点

    鼠标放在SQL变量上, 轻松的拿到最终SQL进行调试, 而不是, 手动去替换@参数, 又或则在SQLServer Profiler 里面大海捞针了!!!

  • 相关阅读:
    ios设备new Date('2019-07-26 11:00:00')报错
    vue图片压缩(不失真)
    ios微信端网页点击右上角复制链接或在浏览器打开,得不到当前页地址(动态路由)
    ios打开网页,输入框获取焦点键盘弹起,关闭键盘,界面下方空白不回弹
    vue-cli打包后vendor.js文件太大怎么办
    ios点击有300毫秒延迟,输入框必须重压或长按才能获取焦点唤起软键盘
    ios微信端上下滑动页面,若触摸的是input区域,页面内不滚动,整个页面被拖动了
    vue-cli打包优化之分析工具webpack-bundle-analyzer
    vue引入fastclick设置输入框type="number"报错Failed to execute 'setSelectionRange' on 'HTMLInputElement': The input element's type ('number') does not support selection.的解决办法
    js/vue图片压缩
  • 原文地址:https://www.cnblogs.com/yangshunde/p/7738659.html
Copyright © 2011-2022 走看看