翻譯|使用教程|編輯:楊鵬連|2021-01-21 10:29:37.567|閱讀 305 次
概述:SQL Prompt可以幫助防止在數據庫代碼中積累技術債務。它會立即向團隊發(fā)出警報,警告可能無法阻止您的代碼按預期工作的問題,但最終可能導致性能,維護或安全性問題。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
SQL Prompt是一款實用的SQL語法提示工具。SQL Prompt根據數據庫的對象名稱、語法和代碼片段自動進行檢索,為用戶提供合適的代碼選擇。自動腳本設置使代碼簡單易讀--當開發(fā)者不大熟悉腳本時尤其有用。SQL Prompt安裝即可使用,能大幅提高編碼效率。此外,用戶還可根據需要進行自定義,使之以預想的方式工作。
SQL Prompt的代碼分析功能可幫助您在鍵入時發(fā)現代碼問題和代碼開發(fā)過程中的隱患。它還提供了改進代碼的技巧,并提供了指向文檔的鏈接,這些文檔提供了有關每個受支持規(guī)則的建議,因此您可以決定最佳的操作方案。安裝或升級到SQL Prompt 9后,您將看到兩個新菜單項:啟用代碼分析和管理代碼分析規(guī)則。確保已選中“啟用代碼分析”。
 
	當您打開現有查詢或開始在新窗口中鍵入內容時,代碼分析功能將開始發(fā)揮作用。它將在后臺解析您的代碼,并根據一組內置規(guī)則檢查SQL語法。這些規(guī)則旨在捕獲可能導致代碼失敗或執(zhí)行不正確的即時問題,消除潛在的性能問題,突出顯示不贊成或過時的語法并鼓勵最佳編碼實踐。代碼問題和改進建議在問題編輯器中以綠色波浪線顯示在查詢編輯器中。
如果單擊“管理代碼分析規(guī)則”,您將看到SQL Prompt當前支持的各種不同類型的規(guī)則。您還可以在其中控制要啟用或禁用的規(guī)則。
 
	當前,所有規(guī)則都是全局的,但是我希望后續(xù)版本允許更精細的控制。例如,開發(fā)人員可能希望針對每個服務器或數據庫配置規(guī)則,就像您對其他“提示”功能(如“標簽顏色”)所做的一樣。他們可能還希望能夠建立和在多組規(guī)則之間進行切換,這取決于他們當前正在從事的項目,其使用方式類似于在多種代碼格式樣式之間使用和交換。
打破規(guī)則…
	通過打破一些規(guī)則,讓我們看看SQL Prompt的代碼分析功能的實際作用。這是我們的原始查詢:
USE WideWorldImportersDW; GO SELECT TOP 10 City, SUM(Profit) FROM Dimension.City c, Fact.Sale WHERE [Latest Recorded Population] !=0 AND City.[City Key] = Sale.[City Key] GROUP BY City ORDER BY SUM(Profit) DESC;在SSSM中打開腳本時,可以看到SQL Prompt突出顯示了一些問題!哦,男孩,看看那些綠色的,彎曲的線條。不要在家嘗試此查詢!
 
	讓我們看看如何使用代碼分析來改進代碼。將鼠標懸停在上TOP 10,我們看到此代碼使用舊式TOP子句:
		 
	
當我們單擊時TOP 10,代碼將突出顯示為綠色,并出現帶有燈泡的藍色圖標。代碼以綠色突出顯示時,我們可以單擊燈泡圖標或按Ctrl以查看詳細信息。
		 
	
彈出“問題詳細信息”窗口,告訴我們有關該問題的更多信息,我們可以轉到在線文檔以獲取更多信息,也可以選擇禁用該規(guī)則。
 
	如果我們選擇從“問題詳細信息”窗口中禁用規(guī)則,則會顯示一個紅色的禁用圖標,綠色的波浪線消失。
		 
	
 
	該問題的詳細信息提供的建議:“列名應該是合格的,其表名,如果它是一個連接的一部分或者是子查詢。即使當前是明確的,在某些時候也可能會做出更改,從而導致錯誤。”
為了解決這個問題,我們首先給表命名。然后,我們節(jié)省了一些時間,并使用SQL Prompt的內置“合格對象名稱”(Ctrl + B,Ctrl + Q )功能,而不是手動限定對象名稱。我們正在進步!我們的查詢只剩下兩個問題。第一個問題是我們使用的是老式的連接語法。
 
	與嚴格的規(guī)則相比,與其他類別相比,風格規(guī)則聽起來更像是個人喜好。但是,破壞良好的樣式慣例可能會帶來比您想象的更多的麻煩,因為這通常會使您的代碼更難于他人閱讀和理解,并且有時還更容易引入錯誤。
盡管仍然支持舊式內部聯(lián)接,但它們沒有提供比ANSI標準JOIN語法更好的優(yōu)勢。此外,如果WHERE在更改其他子句時不小心刪除或注釋了該子句怎么辦?查詢仍將愉快地執(zhí)行,但是您現在有了交叉聯(lián)接,而不是預期的內部聯(lián)接,這可能會導致錯誤的結果。為了解決這個問題,我們重寫查詢以使用ANSI標準JOIN語法。使用顯式聯(lián)接而不是舊式聯(lián)接的一個有益的副作用是,SQL Prompt可以ON為我們建議并插入該子句。
 
	最后,代碼分析告訴我們!=應該用<>運算符替換運算符。
		 
	
現在,我們選擇禁用某些規(guī)則,并更改查詢以遵循其他規(guī)則和最佳樣式慣例。最后一步可能是使用SQL Prompt的Format SQL(Ctrl + K,Ctrl + Y )功能來堅持格式樣式。最終查詢如下所示:
SELECT TOP 10
    c.City,
    SUM(s.Profit)
FROM Dimension.City c
    INNER JOIN Fact.Sale s
        ON s.[City Key] = c.[City Key]
WHERE c.[Latest Recorded Population] <> 0
GROUP BY c.City
ORDER BY SUM(s.Profit) DESC;
通過研究代碼分析建議,我們現在已經知道(或被提醒)應該在TOP子句,合格的對象名稱,顯式聯(lián)接和ANSI樣式運算符中使用推薦的括號。
我的代碼違反了一些規(guī)則,我該怎么辦?
第一個開始是“代碼分析”文檔,您將在“問題詳細信息”窗口中看到該文檔。對于某些規(guī)則,記錄下來的規(guī)則描述應該足以讓您了解如何修復代碼。
 
	但是,對于其他規(guī)則,在決定采取正確的措施之前,您可能需要更多的指導并進行一些研究。Redgate正在構建為每個規(guī)則提供的信息,并且您可以期望看到開發(fā)的文章庫,它們提供了有關如何處理這些問題的更實用建議。如果不確定,請遵循《Transact-SQL參考》中Microsoft的建議。
概要SQL Prompt 9啟動時包含60多個代碼分析規(guī)則,這些規(guī)則檢查代碼中的最佳做法,不推薦使用的功能,對性能的影響,舊樣式等。這只是該功能的第一個版本。隨著它的發(fā)展,我個人希望能夠對每個服務器和數據庫啟用/禁用規(guī)則,根據我正在從事的項目在規(guī)則集之間進行切換,并最終根據建議自動修復代碼中的問題。
但是,SQL Prompt的代碼分析功能已經幫助我確定了代碼中的幾個問題和潛在的改進,并提醒我也更改了某些SQL Prompt代碼片段中的代碼。我知道這是一個偉大的功能,它將幫助團隊防止在其代碼庫中積累技術債務。
當然,永遠不要單靠工具。工具可以為您提供幫助,但始終確保您了解工具為何提出某些建議。將該工具用作提醒,然后從中學習成為更好的SQL開發(fā)人員??
本站文章除注明轉載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自: