• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            missautumn's BLOG

            devote to innovation of technique

            通過配置啟動參數(shù)或連接字符串來跟蹤Sybase SQL AnyWhere的SQL語句執(zhí)行情況

            象其他數(shù)據(jù)系統(tǒng)一樣SQL Anywhere在執(zhí)行sql語句的時候會維持一個db handle,當(dāng)語句結(jié)束調(diào)用結(jié)束后釋放這個handle.我們在開發(fā)過程成往往會忘記去釋放這個handle或者異常發(fā)生后沒有對它進(jìn)行有效的處理,而造成超出連接級數(shù)據(jù)庫屬性Max_statement_count 的設(shè)定值,進(jìn)而引起數(shù)據(jù)庫拋錯誤信息.接下來就這個問題進(jìn)行分析.
            一、如何做到始終釋放open的handle
            在處理db的框架中每個處理函數(shù)都應(yīng)該象下面一樣處理
            try
            {
               //execute sql
            }
            catch(...)
            {

            }
            finally
            {
               //handle dispose codes snippet
            }

            二、如何通過配置db啟動選項(xiàng)來找到你犯的錯
            sybase提供了一些很好的啟動參數(shù)可以讓你抓出你想要的sql log,這里我只介紹 -zr 和 -zo
            1.-zr
            語法:
             -zr { all | SQL | none | SQL+hostvars } ...
            可取值 ALL、SQL、NONE 或 SQL+hostvar。ON 和 ALL 是等效的。OFF 和 NONE 是等效的。此調(diào)用對發(fā)送到數(shù)據(jù)庫服務(wù)器的各 SQL 語句啟用日志,以便用于疑難解答,此選項(xiàng)同數(shù)據(jù)庫服務(wù)器選項(xiàng) -zr 和 -zo 一起使用。

            如果將 -zr設(shè)置為 OFF,則會關(guān)閉請求日志文件。

            如果選擇 SQL,則僅記錄以下類型的請求:

            START DATABASE

            STOP ENGINE

            STOP DATABASE

            語句準(zhǔn)備

            語句執(zhí)行

            EXECUTE IMMEDIATE 語句

            選項(xiàng)設(shè)置

            COMMIT 語句

            ROLLBACK 語句

            PREPARE TO COMMIT 操作

            連接

            斷開連接

            事務(wù)開頭

            DROP STATEMENT 語句

            游標(biāo)解釋

            游標(biāo)關(guān)閉

            游標(biāo)重新開始

            錯誤

            將 -zr 設(shè)置為 SQL+hostvar 時將在日志中輸出 SQL和 主機(jī)變量值。

            使用 property('RequestLogging') 可以得到 -zr 設(shè)置的當(dāng)前值。
            2.-zo
            語法:
            -zo filename...
            將請求記錄信息重定向到與常規(guī)日志文件不同的文件中

            三、通過得到的log文件得到你未釋放的handle
            log 片斷
            每一個handle必須經(jīng)過Prepare->Drop_Stmt這個過程,而如果我們在代碼中忘記釋放handle的話log中是不會有對應(yīng)的DROP_STMT語句的。
            可以通過Prepare后的句柄號來查找對應(yīng)的DROP_STMT語句(如代碼中的第2行和第37行),如果沒找到的話那可以查看對應(yīng)的sql語句從而找到對應(yīng)的代碼。

            整理的比較倉促,如有考慮不周指出請幫我指出。同時希望這篇文章對你有所幫助。

            posted on 2007-07-05 18:06 william 閱讀(2347) 評論(0)  編輯 收藏 引用 所屬分類: Database(MSSQL,Oracle,Sybase)

            欧美日韩精品久久久免费观看| 中文字幕久久亚洲一区| 99久久精品国产高清一区二区 | 久久久久久噜噜精品免费直播 | 国产成人精品久久一区二区三区av| 久久www免费人成看国产片| 久久综合亚洲鲁鲁五月天| 韩国免费A级毛片久久| 久久这里只有精品视频99| A狠狠久久蜜臀婷色中文网| 久久精品国产精品亚洲下载| 无码伊人66久久大杳蕉网站谷歌| 久久久久亚洲AV成人网| 久久婷婷五月综合国产尤物app| 久久黄视频| 99久久人妻无码精品系列蜜桃| 精品国产日韩久久亚洲| 精品国产91久久久久久久a | 天天躁日日躁狠狠久久| 亚洲欧美国产精品专区久久 | 精品国产青草久久久久福利| 无码伊人66久久大杳蕉网站谷歌 | 中文精品久久久久人妻不卡| 久久久久久久综合日本| 久久国产精品国语对白| 9999国产精品欧美久久久久久| 国产成人久久AV免费| 少妇高潮惨叫久久久久久| 久久久SS麻豆欧美国产日韩| 日韩精品久久久久久久电影| 久久久久亚洲av毛片大| 久久久精品久久久久久| 久久婷婷五月综合成人D啪| 国产精品欧美亚洲韩国日本久久| 色噜噜狠狠先锋影音久久| 91亚洲国产成人久久精品| 久久精品国产国产精品四凭| 久久精品国产亚洲Aⅴ香蕉| 欧美粉嫩小泬久久久久久久| 一级A毛片免费观看久久精品| 99久久这里只精品国产免费|