1. 程式人生 > >SqlDataAdapter.Fill()時超時的一個另類的原因:你的儲存過程中有超長的註釋嗎?

SqlDataAdapter.Fill()時超時的一個另類的原因:你的儲存過程中有超長的註釋嗎?

最近在研究網站中,使用SqlDataAdapter進行Fill時總超時的問題,使用查詢分析器執行,結果秒出,使用Sql Server Profiler跟蹤後,得到指令扔到查詢分析器裡,結果還是秒出,但是在頁面執行,就永遠是超時,相當納悶啊

於是把Sql Server Profiler跟蹤內容調整了一下

主要是追加 SP:Starting和SP:Completed以及SP:StmtStarting和SP:StmtCompleted,追加這個是為了跟蹤儲存過程遞迴和觸發器內容

然後,跟蹤結果一片一片的,慢慢看吧

然後,有一個儲存過程的程式碼片段引起了我的注意

在這個儲存過程中,有一大段的註釋掉的程式碼,但是問題來了,在這個介面裡發現有一行很長的註釋程式碼被分成兩行,但第二行沒有當做註釋處理!我的天啊。。。。

於是先修改下儲存過程,看看是不是因為這個註釋引起的超時,很簡單的處理,把過長的註釋內容分成兩行註釋掉

。。。。。。很無語,頁面執行結果變成了秒出

WTF!頁面執行儲存過程難道和查詢分析器執行儲存過程時,對程式碼解析有差別麼?好吧,親身經歷了慘痛教訓,下次寫儲存過程我一定不會讓一行程式碼過長!

相關推薦

SqlDataAdapter.Fill()超時一個原因儲存過程超長註釋

最近在研究網站中,使用SqlDataAdapter進行Fill時總超時的問題,使用查詢分析器執行,結果秒出,使用Sql Server Profiler跟蹤後,得到指令扔到查詢分析器裡,結果還是秒出,但是在頁面執行,就永遠是超時,相當納悶啊 於是把Sql Server Pro

爬蟲從PDF檔案爬取表格資料

簡介   本文將展示一個稍微不一樣點的爬蟲。   以往我們的爬蟲都是從網路上爬取資料,因為網頁一般用HTML,CSS,JavaScript程式碼寫成,因此,有大量成熟的技術來爬取網頁中的各種資料。這次,我們需要爬取的文件為PDF檔案。本文將展示如何利用Python的camelot模組

計算頁面停留長的方式

計算頁面停留時長,往常計算也頁面留時長都需要跑spark或這mr任務來實現,如果能跑sql來實現那是最好不過了(sql是最好的語言),廢話不多說,直接搞起 注意:這裡使用的計算引擎是presto 首先來建立一張使用者瀏覽記錄資料表,表結構很簡單隻有3個欄位,uid

Android 一個的 '進度條' 效果

之前一個朋友問我一個類似於廣播電臺頻率的進度條,可能很多人看到圖的第一時間就是 自定義View 。 跟他聊天的過程中提到了 H5 的實現方式,我突然想起來,Android 端好像也可以用類似的方式去實現一下。 效果圖: 這個你能否想到是什麼實現方

break的一個用法

public class Test { public static void main(String[] args) throws IOException { saveLabel: { boolean isFlag = true;

FTP 與伺服器的連線被重置的原因解決【IP衝突】

公司在萬網買了虛擬主機,今天用桌上型電腦連了上去傳東西,還有一部分檔案在另一臺筆記本上,於是用筆記本也連了上去,傳到一半問題來了,提示與伺服器的連線被重置 但是,公司買的另外一個萬網主機卻能正常開啟,那這是怎麼回事?和萬網客服交流了半天,期間對方提出了幾個檢測的方法,也讓

編寫一個ArrayList,用來儲存1到10之間的數,打亂順序後輸出,按從小到大輸出,按從大到小輸出。

/** * Created by whp on 2018/7/30. */ public class Test { public static void main(String[] args) { List list = new ArrayList();

mssql 儲存過程呼叫一個儲存過程的結果的方法分享

摘要:   下文將分享"一個儲存過程"中如何呼叫"另一個儲存過程的返回結果",並應用到自身的運算中在實際開發中,我們經常會遇到在一個儲存過程中呼叫另一個儲存過程的返回結果(儲存過程相互應用) 實現思路:主要採用臨時表將儲存過程返回的結果集進行儲存,然後供另一個儲存過程應用。

memset初始化測試(部分數字註釋

我們常用memset對int陣列進行初始化,替換數字可以是0或-1,但若為其他數字呢? 測試程式碼如下: #include<cstdio> #include<cstring> using namespace std; int a[20];

數組 型 在 存儲過程 使用

beef tac set || 引用數組 () ase rac 網上 oracle 之定義數組類型 註:本文來源:《oracle 之定義數組類型 》oracle 數組類型,沒有現成的類型,但是可以自己隨意定義,很方便。Oracle 數組可以分為定長數組和可變長的數組兩類。以

SQL Server儲存過程top後為變數的處理

@pageRecordNum為每頁顯示的記錄數,@currentPageNum為當前的頁數 create proc pagination  @pageRecordNum int,@currentPageNum int as  declare @recNum varchar(

Qt編譯出錯原因----專案儲存路徑中文!!!

為專案MotorCtrlDemo執行步驟 … 19:11:50: 正在啟動 “C:\Qt\Qt5.9.0\5.9\msvc2013_64\bin\qmake.exe” E:\參考程式\MotorCtrlDemo\MotorCtrlDemo.pro -spec win32-msvc “CO

LeetCode--陣列演算法刪除排序陣列的重複項 II

題目 給定一個排序陣列,你需要在原地刪除重複出現的元素,使得每個元素最多出現兩次,返回移除後陣列的新長度。 不要使用額外的陣列空間,你必須在原地修改輸入陣列並在使用 O(1) 額外空間的條件下完成。 示例一: 給定 nums = [1,1,1,2,2,3], 函式應返回

舉例一個簡單的增刪改查儲存過程demo

--如果A表中不存該號 在檢查B表 CREATE OR REPLACE PROCEDURE SP_NMS_DELETE -- 刪除MMS_NM_NETMESSAGE功能,所有引數均為NULL時,直接返回刪除失敗標識. -- 楊化龍 -- 返回值R_DELETE_SECC

C++封裝成dll,dll全域性變數

#ifndef COM_DB_H #define COM_DB_H #include <stdlib.h> #include <stdio.h> #include <iostream> #ifdef MYLIBDLL #define

編寫一個函式print,列印一個學生的成績陣列,該陣列5個學生的資料記錄,每個記錄包括num,name,score[3],用主函式輸入這些資料,用print輸出這些記錄

編寫一個函式print,列印一個學生的成績陣列,該陣列中有5個學生的資料記錄,每個記錄包括num,name,score[3],用主函式輸入這些資料,用print輸出這些記錄 程式碼如下: #include<stdio.h> #define N 5 typedef struc

關於sql server 在儲存過程建立臨時表,並往臨時表插入資料出現亂碼的問題

  此前在客戶一個繁體系統的sql  server中執行儲存過程的時候出現亂碼,經查發現建立臨時表後,往臨時表中插入資料時得到的資料是亂碼的,所以檢視建立表的sql指令碼,經查需要將變數型別設定為  

[PL/SQL] 請教大家一個問題,儲存過程需要幾個commit?

如果中間有語句發生錯誤就不一樣了,寫了一個測試的例子,看看對你有幫助沒有 drop table aatest; create table aatest (nid number,nname varchar2(16)) insert into aatest(nid,nname)values(1,'00

如何解決儲存過程關聯臨時表慢的情況

     呼叫一個儲存過程,同樣的條件,資料庫負載也是正常的情況下,時快時慢。原因是資料庫無法獲取臨時表的統計資訊,導致執行計劃會走錯。之前寫過一個帖子,被臨時表坑了,http://blog.csdn.net/stevendbaguo/article/details/399