您好,登錄后才能下訂單哦!
通過在SQL03上“查找CPU消耗前十的查詢”(腳本如下所示)時發現,第一名是一個奇怪的語句。
SELECT TOP ( 10 ) SUBSTRING(ST.text,( QS.statement_start_offset /2 ) + 1, (( CASE statement_end_offset WHEN -1 THENDATALENGTH(st.text) ELSE QS.statement_end_offset END- QS.statement_start_offset) / 2 ) + 1) ASstatement_text , execution_count , total_worker_time / 1000 AStotal_worker_time_ms , (total_worker_time / 1000 ) / execution_count ASavg_worker_time_ms , total_logical_reads , total_logical_reads / execution_count ASavg_logical_reads , total_elapsed_time / 1000 AStotal_elapsed_time_ms , (total_elapsed_time / 1000 ) / execution_count ASavg_elapsed_time_ms , qp.query_plan FROM sys.dm_exec_query_stats qs CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) st CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle) qp ORDER BY total_worker_time DESC
語句展開為:
SELECT "Tbl1012"."FMSKU""Col1060","Tbl1012"."FMID" "Col1063","Tbl1012"."ToID""Col1067" FROM "ARCHIVE"."dbo"."Log" "Tbl1012" WITH (NOLOCK) WHERE "Tbl1012"."ToLotnum"=@P1 AND "Tbl1012"."TransactionType"='MV' AND "Tbl1012"."ReasonCode"='PG' AND "Tbl1012"."FMLocation"like 'STAGE%' COLLATE Chinese_PRC_CI_AS AND "Tbl1012"."ToLocation"like 'STAGE%' COLLATE Chinese_PRC_CI_AS
發現該語句里的表別名和列別名很奇怪。
于是,開啟了SQL03上的Profiler跟蹤。在“General”標簽頁,選擇Standard模板。在“Events Selection”標簽頁,選擇需要跟蹤的事件類,勾選“Show all columns”,這里最關鍵的幾列務必要選擇:HostName、SessionLoginName和DatabaseName。然后點擊“Column Filters…”,TextData在Like過濾條件中輸入%Tbl1012%。開啟跟蹤。
根據捕獲的輸出結果,來源主機為SQL01,會話登錄名為ARCHIVE,數據庫名為master。
于是,在SQL01上開啟Profiler跟蹤。在“General”標簽頁,選擇TSQL_SPs模板。在“Events Selection”標簽頁,務必選擇“SP:StmtStarting”事件類,勾選“Show all columns”,務必選擇:LineNumber、SessionLoginName和SourceDatabaseID。點擊“Column Filters…”,TextData的Like過濾條件輸入%STAGE3%。開啟跟蹤。
LineNumber
包含存在錯誤的行的行號。對于涉及 Transact-SQL 語句的事件,像SP:StmtStarting,LineNumber包含的是存儲過程或批處理中語句的行號。
參見:https://msdn.microsoft.com/zh-cn/library/ms190762(v=SQL.100).aspx
從捕獲的輸出中,我們可以知道該語句出自SP的2223行附近。于是,找到該SP的2223行得到驗證。
然后通過該LinkedServer的“Local Login”和“Remote User”的對應關系進一步驗證了。
總結
含有LINKEDSERVER的查詢的別名在遠端被內部命名為TBLxxxx\COLxxxx。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。