2015-01-17 22 views
0

有人在botnetting我的httpd,結果我的網站上走下來時,CPU來撞去太多的垃圾郵件的100%和錯誤日誌「沒有足夠的線程離開或W/E」,一旦我阻止了所有非Cloudflare IP,DDoS已停止。MSSQL,通過我的網站SQL洪水

他現在回來了,雖然...與sql洪水。每當我離開我的httpd打開他的SQL氾濫我的服務器和sqlservr進程是現在在CPU中達到100%。我做了一個子文件夾的網站副本,並禁用所有的SQL執行從主網站,所以一切都很好,但我需要一個適當的解決方案...所以我必須找出什麼SQL的東西,他實際上執行,所以我可以禁用或限制他們。

有關如何查找通過我的網站發生的所有sql執行的任何想法?我記得幾年前我有一個工具可以實時通知我有關每個「通過網絡執行sql」的工具,但我忘記了它的名字。

有什麼建議嗎?

+0

您可以運行批處理和RPC完成事件的服務器端SQL跟蹤或等效的擴展事件跟蹤。可以從Profiler(文件 - >導出 - >腳本跟蹤定義)創建SQL跟蹤的腳本。保存後自定義腳本(文件路徑,文件大小,翻轉文件)並執行。 –

+0

此外,您還可以查看sys,dm_exec_query_stats以確定執行緩存查詢的頻率。按execution_count降序排序。 –

+0

另外,請向CloudFlare提出投訴。知識產權應該讓他們識別犯罪者。 – Andomar

回答

0

下面是一個查詢的例子來收集最常執行的查詢彙總,因爲實例啓動。

SELECT TOP (100) qs.execution_count, 
    SUBSTRING(qt.text,qs.statement_start_offset/2 +1, 
       (CASE WHEN qs.statement_end_offset = -1 
         THEN LEN(CONVERT(nvarchar(max), qt.text)) * 2 
         ELSE qs.statement_end_offset end - 
          qs.statement_start_offset 
       )/2 
      ) AS query_text 
    , DB_NAME (qt.dbid) AS dbname 
    , qs.total_rows 
    , qs.total_physical_reads 
    , qs.total_worker_time 
FROM sys.dm_exec_query_stats AS qs 
CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) AS qt 
ORDER BY 
     qs.execution_count DESC; 

有關單個查詢的詳細信息,您需要批量和RPC完成事件的SQL跟蹤或擴展事件跟蹤。可以從Profiler(文件 - >導出 - >腳本跟蹤定義)創建SQL跟蹤的腳本。保存後自定義腳本(文件路徑,文件大小,翻轉文件)並執行。