❶ 怎麼跟蹤應用程序執行的sql語句
---跟蹤
開始--程序--MS SQLSERVER
--事件探察器(SQL Profiler)
--文件
--新建--跟蹤...
--設置要跟蹤的伺服器的信息(連接伺服器)--確定
--設置跟蹤的項目...
--然後資料庫的調用情況就會顯示出來
在跟蹤項目設置中,如果不熟悉的話,一般用默認設置
篩選項目有幾個可以注意一下:
1.DatabaseName 同於你要檢測的資料庫名
2.Error 同於錯誤,如果經常出現某個編號的錯誤,則針對此錯誤號
3.Seccess 同於0,失敗,1,成功,如果是排錯,就過濾掉成功的處理
❷ 如何獲取一個應用軟體的資料庫,用sql語句查自己想要的表
你是要查看整個資料庫嗎嗎?查詢資料庫的全部信息SQL語句:select * from資料庫名。還有什麼sql語句不知道,可以追問我。望採納,謝謝!
❸ 如何防止sql注入攻擊
1,避免將用戶提供的輸入直接放入SQL語句中,最好使用准備好的語句和參數化查詢,這樣更加安全。
2,不要將敏感數據保存在純文本中,加密存儲在資料庫中的私有或機密數據,這樣可以提供另一級保護,以防止攻擊者成功地排出敏感數據。
3,將資料庫用戶的功能設置為最低要求,這將限制攻擊者在設法獲取訪問許可權時可以執行的操作。
4,避免直接向用戶顯示資料庫錯誤,攻擊者可以使用這些錯誤消息來獲取有關資料庫的信息。
5,對訪問資料庫的Web應用程序使用防火牆,這樣可以為面向Web的應用程序提供保護,可以幫助識別SQL注入嘗試;根據設置,還可以幫助防止SQL注入嘗試到達應用程序。
6,定期測試與資料庫交互的Web應用程序,這樣做可以幫助捕獲可能允許SQL注入的新錯誤或回歸。
7,將資料庫更新為最新的可用修補程序,這可以防止攻擊者利用舊版本中存在的已知弱點或錯誤。
❹ 怎樣獲得應用程序所執行的SQL語句 (1)
我們在確定應用程序性能的時候,更多地會關注其中SQL語句的執行情況。通常應用的性能瓶頸會在資料庫這邊,因此資料庫的sql語句是我們優化的重點。 要對sql語句進行優化,首先要知道應用程序執行了哪些SQL語句。下面我介紹三種方法來獲得應用程序所執行的SQL語句。 方法一:如果你採用的資料庫是oracle的話,那麼可以利用oracle本身的10046事件跟蹤SQL語句。步驟如下: 1、首先獲得spid、sid、serial#,machine為你的機器名 SQL> select b.spid,a.sid,a.serial#, a.machine from v$session a,v$process b where a.paddr = b.addr and a.machine='yz'; SPID SID SERIAL# MACHINE 9497 49 3406 yz 2、利用10046事件開始跟蹤 SQL>execute sys.dbms_system.set_ev(49, 3406,10046,1,''); PL/SQL procere successfully completed. 5、SQL trace 工具會收集這個過程中執行的SQL的性能狀態數據,記錄到一個跟蹤文件中.這個跟蹤文件提供了許多有用的信息,例如解析次數.執行次數,CPU使用時間等。 6、這時候你可以通過下面的語句獲得產生的跟蹤文件所在的目錄: SQL> select value from v$parameter where name = 'user_mp_dest'; VALUE /opt/oracle/admin/ocn/ump 7、在/opt/oracle/admin/ocn/ump下找到yzoracle_ora_9497.trc。9497是你當前應用的spid。 8、注意yzoracle_ora_9497.trc是不可讀的,我們需要執行oracle的tkprof命令,將yzoracle_ora_9497.trc轉化為我們可讀的文本文件。 tkprof yzoracle_ora_9497.trc yzoracle_ora_9497.sql 這樣你就可以在yzoracle_ora_9497.sql文件中看到所有的sql語句執行次數,CPU使用時間等數據。
❺ 如何截獲提交道SQLServer伺服器上的SQL語句
打開
"開始"-"所有程序"-"Microsoft SQL Server"-"事件探查器"
打開程序之後點菜單欄的
"文件"-"新建"-"跟蹤"
然後執行你要看SQL語句的程序.事件探查器就會把該時間段內所有執行的SQL語句列出來.
相關知識如下:
使用 SQL 事件探查器進行監視
SQL 事件探查器是圖形工具,使系統管理員得以監視 Microsoft® SQL Server™ 實例中的事件。可以捕獲有關每個事件的數據並將其保存到文件或 SQL Server 表中供以後分析。例如,可以對生產環境進行監視,了解執行速度太慢而妨礙性能的存儲過程。
使用 SQL 事件探查器只監視感興趣的事件。如果跟蹤變得太大,可以基於需要的信息進行篩選,以便只收集事件數據的子集。監視太多事件類會增加伺服器和監視進程的開銷,並且可能導致跟蹤文件或跟蹤表變得很大,尤其是在進行長時間監視時。
在跟蹤事件後,SQL 事件探查器允許重播在 SQL Server 實例上捕獲的事件數據,因此可以如事件當初發生時一樣有效地重新執行保存的事件。
使用 SQL 事件探查器可以:
監視 SQL Server 實例的性能。
調試 Transact-SQL 語句和存儲過程。
識別執行慢的查詢。
在工程開發階段,通過單步執行語句測試 SQL 語句和存儲過程,以確認代碼按預期運行。
通過捕獲生產系統中的事件並在測試系統中重播它們來解決 SQL Server 中的問題。這對測試和調試很有用,並使得用戶可以不受干擾地繼續使用生產系統。
審核和復查在 SQL Server 實例中發生的活動。這使得安全管理員得以復查任何審核事件,包括登錄嘗試的成功與失敗,以及訪問語句和對象的許可權成功與失敗。
SQL 事件探查器為用於監視 SQL Server 實例的一組存儲過程提供圖形用戶界面。例如,可以創建您自己的應用程序,以便使用 SQL 事件探查器存儲過程監視 SQL Server。
必須有至少 10 MB 的可用空間用以運行 SQL 事件探查器。當使用 SQL 事件探查器時,如果可用空間降至 10 MB 以下,SQL 事件探查器的所有功能都將停止。
SQL 事件探查器術語
若要使用 SQL 事件探查器,需要了解描述工具功能的術語。例如,創建模板來定義要收集的數據。通過在模板中所定義的事件上運行跟蹤來收集這些數據。當運行跟蹤時,描述事件數據的事件類和數據列顯示在 SQL 事件探查器中。
模板
模板定義想要使用 SQL 事件探查器監視的每個事件的准則。例如,可以創建一個模板以指定使用哪些事件、數據列和篩選。然後可以保存該模板,並用當前的模板設置啟動跟蹤。捕獲的跟蹤數據基於模板中指定的選項。模板不執行且必須用 .tdf 擴展名保存到文件。
跟蹤
跟蹤基於選定的事件、數據列和篩選捕獲數據。例如,可創建模板監視異常錯誤。為此,應選擇跟蹤 Exception 事件類以及 Error、State 和 Severity 數據列,這些都是為了使跟蹤結果提供有意義的數據而需收集的。保存模板後,便可將其作為跟蹤運行,並且可收集關於伺服器中發生的任何 Exception 事件的數據。可保存此跟蹤數據,然後稍後重播或立即用於分析。
篩選
當創建跟蹤或模板時,可以定義篩選由事件收集的數據的准則。如果跟蹤變得太大,可以基於想要的信息進行篩選,以便只收集事件數據的子集。如果沒有設置篩選,跟蹤輸出中將返回選定事件類的所有事件。例如,可以將跟蹤中的 Microsoft Windows® 2000 用戶名限制為特定用戶,以將輸出數據減少到感興趣的那些用戶。
事件分類
事件分類定義事件的分組方法。例如,所有鎖事件類都在鎖事件分類內分組。但是,事件分類只存在於 SQL 事件探查器中。該術語不反映引擎事件的分組方法。
事件
事件是在 Microsoft® SQL Server™ 引擎中生成的操作。例如:
登錄連接、失敗和斷開。
Transact-SQL SELECT、INSERT、UPDATE 和 DELETE 語句。
遠程過程調用 (RPC) 批處理狀態。
存儲過程的開始或結束。
存儲過程內的語句的開始或結束。
SQL 批處理的開始或結束。
寫入 SQL Server 錯誤日誌的錯誤。
在資料庫對象上獲取或釋放的鎖。
打開的游標。
安全許可權檢查。
由事件生成的所有數據顯示在單個行中的跟蹤內 。該行包含詳細描述事件的數據列,稱為事件類。
事件類
事件類是描述由伺服器生成的事件的列。事件類確定收集的數據類型,因此並不是所有數據列都適用於所有事件類。事件類示例包括:
SQL:BatchCompleted,表示已完成 SQL 批處理。
運行客戶端的計算機的名稱。
受事件影響的對象 ID(如表名)。
發出語句的用戶的 SQL Server 名稱。
正在執行的 Transact-SQL 語句文本或存儲過程文本。
事件開始和結束的時間。
數據列
數據列描述為跟蹤內捕獲的每個事件類所收集的數據。事件類確定收集的數據類型,因此並不是所有數據列都適用於所有事件類。例如,為 Lock:Acquired 事件類捕獲 Binary Data 數據列時,該數據列包含鎖定的頁 ID 或行的值,但沒有 Integer Data 事件類的值。對於所有事件類,默認數據列均為自動填充。
❻ sql server 怎麼捕捉sql語句
如果在Transact-SQL中發生了錯誤,一般有兩種捕捉錯誤的方法,一種是在客戶端代碼(如c#、delphi等)中使用類似try...catch的語句進行捕捉;另外一種就是在Transact-SQL中利用Transact-SQL本身提供的錯誤捕捉機制進行捕捉。如果是因為Transact-SQL語句的執行而產生的錯誤,如鍵值沖突,使用第一種和第二種方法都可以捕捉,但是如果是邏輯錯誤,使用客戶端代碼進行捕捉就不太方便。因此,本文就如何使用Transact-SQL進行錯誤捕捉進行了討論。
非致命錯誤(non-fatal error)的捕捉
通過執行Transact-SQL而產生的錯誤可分為兩種:致命錯誤(fatal error)和非致命錯誤(non-fatal error)。在Transact-SQL中只可以捕捉非致命錯誤(如鍵值沖突),而無法捕捉致命錯誤(如語法錯誤)。在Transact-SQL中可以通過系統變數@@ERROR判斷最近執行的一條語句是否成功執行。如果發生了錯誤,@@Error的值大於0,否則值為0。下面舉一個例子說明@@ERROR的使用。
假設有一個表table1,在這個表中有兩個欄位f1,f2。其中f1是主鍵。
INSERTINTOtable1VALUES(1,'aa')INSERTINTOtable1VALUES(1,'bb')--這條語句將產生一個錯誤IF@@ERROR0PRINT'鍵值沖突'當執行第二條語句時發生鍵值沖突錯誤,@@ERROR被賦為錯誤號2627,因此輸出結果顯示'鍵值沖突'。使用@@ERROR系統變數時需要注意,@@ERROR只記錄最近一次執行的Transact-SQL語句所發生的錯誤,如果最近一次執行的Transact-SQL沒有發生錯誤,@@ERROR的值為0。因此,只能在被捕捉的那條Transact-SQL語句後使用@@ERROR。
在SQL Server中,不僅可以捕捉系統提供的錯誤,還可以自定義錯誤。有兩種方法可以定義錯誤信息。
1. 使用sp_addmessage系統存儲過程添加錯誤信息,然後使用RAISERROR拋出錯誤。
sp_addmessage將錯誤號,錯誤級別、錯誤描述等信息添加到系統表中,然後使用RAISERROR根據相應的錯誤號拋出錯誤信息。用戶自定義的信息應該從50001開始。EXECsp_addmessage@msgnum=50001,
@severity=16,@msgtext='sql encounter an error(%s).',@lang='us_english'EXECsp_addmessage@msgnum=50001,
@severity=16,@msgtext='sql遇到了一個錯誤(%1!).'如果使用的SQL Server版本是非英語版本,在添加本地錯誤信息時必須首先添加英文的錯誤信息。錯誤描述可以象c語言中的printf的格式字元串一樣使用參數,如%s、%d。但要注意的是在英文版的錯誤信息中要使用%s、%d等形式,而在本地化的錯誤信息中要使用%1!、%2!等形式,在每個%?(1 <= ? <= n)後需要加一個!,而且%?的數目必須和英文版的錯誤信息的參數一致。
在未插入本地化錯誤信息時,RAISERROR將使用英文版的錯誤信息。當插入本地化錯誤信息時,RAISERROR使用本地化的錯誤信息。
RAISERROR(50001,16,1,'測試')
輸出的結果:
伺服器: 消息50001
,級別16
,狀態1
,行1sql遇到了一個錯誤(測試).
其中'測試'字元串通過%1傳入本地化的錯誤描述字元串中。
2. 直接使用RAISERROR將錯誤拋出。
使用第一種方法雖然使Transact-SQL語句看上去更整潔(這種方法類似於在編程語言中使用常量定義錯誤信息,然後在不同的地方通過錯誤編號引用這些錯誤信息。),但是這樣做卻使錯誤信息和資料庫的耦合度增加,因為如果將這些帶有RAISERROR的Transact-SQL放到別的SQL Server資料庫上執行,由於在其它的資料庫中還未添加錯誤信息,因此會產生RAISERROR調用錯誤,除非使用sp_addmessage將所需的錯誤信息再加入到其它的資料庫中。
基於上述原因,RAISERROR不僅可以根據錯誤代碼拋出錯誤信息,也可以直接通過錯誤描述格式字元串拋出錯誤信息。
❼ fiddler這款軟體能不能捕獲軟體執行的sql語句,我好像看見有這樣一款工具,當你點擊一個按鈕時能夠捕獲sql
Sql Server Profiler工具,安裝SQL Server自帶的有
❽ 如何獲得應用程序所執行的SQL語句
sql2000 的話,有個 sql 事件查看器 的工具, 和查詢分析器 一樣,登錄伺服器以後會跟蹤所有訪問伺服器的SQL語句,更改版本的SQL也有,名字換了個,忘了叫什麼了