翻譯|使用教程|編輯:莫成敏|2019-10-16 15:04:31.440|閱讀 563 次
概述:SQL Prompt是一款實(shí)用的SQL語(yǔ)法提示工具。本文將介紹Prompt最著名的生產(chǎn)力功能,代碼完成和IntelliSense,尤其是我如何控制其工作方式以適應(yīng)我的需求。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
SQL Prompt是一款實(shí)用的SQL語(yǔ)法提示工具。其根據(jù)數(shù)據(jù)庫(kù)的對(duì)象名稱(chēng)、語(yǔ)法和代碼片段自動(dòng)進(jìn)行檢索,為用戶(hù)提供合適的代碼選擇。自動(dòng)腳本設(shè)置使代碼簡(jiǎn)單易讀--當(dāng)開(kāi)發(fā)者不大熟悉腳本時(shí)尤其有用。SQL Prompt安裝即可使用,能大幅提高編碼效率。
有個(gè)老笑話(huà)說(shuō),升級(jí)到最新的SQL Server在某些DBA上是浪費(fèi)的,因?yàn)樗鼈內(nèi)詫⒅饕獔?jiān)持在SQL Server 2005中起作用。根據(jù)我的經(jīng)驗(yàn),這種類(lèi)型的DBA變得越來(lái)越罕見(jiàn),但是我們很多人沒(méi)有從我們的SQL Server工具中獲得“全部功能”的觀點(diǎn)是有一定道理的。當(dāng)它們“開(kāi)箱即用”時(shí),我們會(huì)與他們合作,并且僅使用其功能的一小部分。探尋“新事物”的時(shí)間,至少與我們想要的一樣,仍然難以捉摸。
SQL Prompt是一個(gè)很好的工具,可以幫助個(gè)人開(kāi)發(fā)人員以及整個(gè)團(tuán)隊(duì)在編寫(xiě)SQL時(shí)提高工作效率。但是,我懷疑許多用戶(hù)從未發(fā)現(xiàn)它的許多功能,尤其是較新的增強(qiáng)功能。對(duì)于他們使用的零件,他們并不總是花時(shí)間來(lái)研究如何配置和控制其行為以最適合其需求。
如果您的情況如此,希望本文對(duì)您有所幫助。我將介紹Prompt最著名的生產(chǎn)力功能,代碼完成和IntelliSense,尤其是我如何控制其工作方式以適應(yīng)我的需求。然后,我將簡(jiǎn)要介紹一些“鮮為人知”的功能,這些功能可以提高團(tuán)隊(duì)的工作效率,并有助于防止不必要的錯(cuò)誤以及從錯(cuò)誤中恢復(fù)所造成的時(shí)間損失。
更快地編寫(xiě)SQL
作為數(shù)據(jù)庫(kù)開(kāi)發(fā)人員,我需要提高工作效率,而且我一直都在使用SQL Prompt的代碼完成和IntelliSense功能。是的,IntelliSense在SQL Server Management Studio中是本地可用的,但是除了列出可用對(duì)象之外,它所做的只是其他事情。
SQL Prompt的IntelliSense更有用。它為列和表提供自動(dòng)完成建議,幫助填寫(xiě)JOIN條件,GROUP BY子句,顯示對(duì)象定義和依賴(lài)項(xiàng)等。當(dāng)然,作為開(kāi)發(fā)人員,由于我們將大量使用它,因此我們將希望能夠精確控制此功能的工作方式,以?xún)?yōu)化生產(chǎn)力。
最近的一項(xiàng)增強(qiáng)功能是,使最近使用最多的對(duì)象上升到建議框頂部的選項(xiàng)。和往常一樣,我們可以在“SQL Prompt選項(xiàng)”菜單中進(jìn)行配置,在這種情況下,可以在“建議” >“行為”中:
在下面的示例中,我輸入了前面的兩個(gè)查詢(xún),第一個(gè)查詢(xún)?cè)趗sers表上,第二個(gè)查詢(xún)?cè)趕ales表上。現(xiàn)在,當(dāng)我在第三個(gè)查詢(xún)中鍵入內(nèi)容時(shí),我看到sales和users表是列表中的前兩個(gè)建議,用灰色細(xì)線(xiàn)將其與其他選擇分開(kāi)。
“建議” >“行為”部分包含其他有用的選項(xiàng),例如,使我們可以控制何時(shí)彈出建議框,顯示對(duì)象定義框等。另一個(gè)相對(duì)較新且簡(jiǎn)單的增強(qiáng)功能是“使彈出窗口透明... ”選項(xiàng)。當(dāng)您在查詢(xún)中間進(jìn)行編輯時(shí),這很有用,否則彈出建議框會(huì)掩蓋查詢(xún)的其余部分。當(dāng)您需要進(jìn)行的更改與隱藏的語(yǔ)句相關(guān)時(shí),這尤其令人煩惱。只需按Ctrl鍵,彈出框就會(huì)暫時(shí)透明。
您還可以在“建議”部分的其他位置找到其他有用的控件。例如:
建議 > 連接——控制為其提出建議的數(shù)據(jù)庫(kù)和模式。這可以立即消除很多“噪音”
建議 > 連接條件——指定建議JOIN條件的條件
改善SQL標(biāo)準(zhǔn)
除了IntelliSense之外,SQL Prompt還有很多事情要做。它還提供了一組有助于改善SQL編碼標(biāo)準(zhǔn)的功能,例如自動(dòng)格式化、可重復(fù)使用的代碼段以及代碼分析。在每種情況下,這些功能均旨在允許您定義團(tuán)隊(duì)標(biāo)準(zhǔn),然后共享它們并一致地實(shí)施它們。
這些功能使SQL Prompt成為了出色的團(tuán)隊(duì)協(xié)作工具。它們幫助我與開(kāi)發(fā)人員合作,灌輸良好的SQL編碼實(shí)踐,防止重復(fù),并減少將其轉(zhuǎn)化為生產(chǎn)代碼的代碼問(wèn)題。
之前我有描述過(guò)這些功能,現(xiàn)在就不贅述了。但是,值得經(jīng)常檢查發(fā)行說(shuō)明和文檔,因?yàn)閷?duì)這些功能進(jìn)行更改和添加非常頻繁。例如,對(duì)于代碼分析,SQL Prompt現(xiàn)在將自動(dòng)修復(fù)越來(lái)越多的一些較簡(jiǎn)單的代碼問(wèn)題。
避免意外丟失數(shù)據(jù)
在作為DBA的職業(yè)生涯中,我一直想嚴(yán)格控制誰(shuí)可以從SQL Server Management Studio訪(fǎng)問(wèn)我們的生產(chǎn)SQL Server實(shí)例。但是,盡管存在明顯的危險(xiǎn),但通常很難勸阻組織不要允許人們使用這種“快速、簡(jiǎn)便”的方式進(jìn)行更改。我一直在努力尋找更好的選擇。安全地進(jìn)行修復(fù),進(jìn)行測(cè)試然后優(yōu)雅地發(fā)布它們的過(guò)程。但是,改變主意并不容易,尤其是在經(jīng)常重復(fù)“所有客戶(hù)都應(yīng)該通過(guò)SSMS訪(fǎng)問(wèn)”之類(lèi)的組織中。當(dāng)然,有時(shí)負(fù)責(zé)生產(chǎn)數(shù)據(jù)庫(kù)性能和數(shù)據(jù)安全性的DBA除了直接進(jìn)行緊急修復(fù)外,別無(wú)選擇。
對(duì)于所有這些情況,SQL Prompt都具有一些有用的功能,這些功能可以保護(hù)我以及任何直接訪(fǎng)問(wèn)登臺(tái)服務(wù)器或生產(chǎn)服務(wù)器的開(kāi)發(fā)人員,避免意外地進(jìn)行破壞性的數(shù)據(jù)庫(kù)更改,或意外刪除對(duì)象或數(shù)據(jù),或者進(jìn)行更多操作。錯(cuò)過(guò)了重要的過(guò)濾條件,因此進(jìn)行了超出預(yù)期的廣泛更改。要“消除”此類(lèi)事故的影響,可能需要花費(fèi)數(shù)小時(shí)的艱苦工作。
SSMS選項(xiàng)卡著色
此功能將根據(jù)連接的每個(gè)選項(xiàng)卡所使用的服務(wù)器或服務(wù)器類(lèi)型,對(duì)查詢(xún)窗格頂部的每個(gè)“標(biāo)簽”以及底部狀態(tài)窗格進(jìn)行顏色編碼。一旦您習(xí)慣了亮紅色的標(biāo)簽表示“我已連接到生產(chǎn)服務(wù)器” 的想法,在連接到“錯(cuò)誤”服務(wù)器的查詢(xún)窗格中意外執(zhí)行代碼就變得更加困難!
執(zhí)行警告
有許多方法可以無(wú)意或以其他方式破壞數(shù)據(jù)或?qū)ο蟆D怀鲲@示DELETE或UPDATE語(yǔ)句,但不小心忽略了該WHERE子句。您的代碼中有不需要的DROP或TRUNCATE命令,可能是一些測(cè)試代碼的殘跡,或者是一些未經(jīng)測(cè)試且不正確的代碼,它們會(huì)根據(jù)某些業(yè)務(wù)邏輯修改數(shù)據(jù)。從本質(zhì)上講,沒(méi)有辦法在不實(shí)現(xiàn)附加邏輯或不使用觸發(fā)器的情況下停止執(zhí)行此類(lèi)命令。
當(dāng)我們嘗試執(zhí)行可能導(dǎo)致意外更改或數(shù)據(jù)丟失的無(wú)條件命令時(shí),SQL Prompt的執(zhí)行警告可以提醒我們。這個(gè)想法基于語(yǔ)法檢查引擎。該工具可以嗅探該命令,并且可以檢測(cè)以下情況并提出警告:
UPDATE或DELETE沒(méi)有WHERE條件的語(yǔ)句,包括用于,INNER JOIN創(chuàng)建或更改過(guò)程或觸發(fā)器時(shí)的條件。
DROP和TRUNCATE聲明(v9.5.6及更高版本)
例如,以下DELETE語(yǔ)句將從表Table1中刪除ID值與表Table2中所找到的那些行匹配的所有行:
DELETE FROM T1 FROM dbo.Table1 AS T1 JOIN dbo.Table2 AS T2 ON T1.ID = T2.ID;
默認(rèn)情況下,當(dāng)我們對(duì)以下語(yǔ)句單擊“執(zhí)行”時(shí),SQL Prompt將發(fā)出警告:
但是,由于我多次使用這種語(yǔ)句,因此對(duì)于生產(chǎn)率而言,禁用此類(lèi)警告的能力也很重要。您可以從“選項(xiàng)”菜單(“建議” >“警告和突出顯示” >“執(zhí)行警告”)控制SQL Prompt將發(fā)出哪些警告。如前所述,即使啟用這些警告,早處理臨時(shí)對(duì)象時(shí)也不會(huì)引發(fā)這些警告。
在每種情況下,如果您決定不繼續(xù)執(zhí)行該語(yǔ)句,則會(huì)看到一條綠色的波浪線(xiàn)和一個(gè)工具提示,解釋了為什么發(fā)出警告。這是一個(gè)DROP聲明的示例:
結(jié)論
SQL Prompt是一個(gè)很棒的SQL生產(chǎn)工具。我特別喜歡它經(jīng)常對(duì)其所有功能進(jìn)行改進(jìn),因此,值得一提的是使用UserVoice服務(wù)要求某個(gè)功能或增強(qiáng)功能。
我喜歡這種方法。每天都在使用SQL Server的最終用戶(hù)共享他們的知識(shí),并要求進(jìn)行更改,團(tuán)隊(duì)會(huì)做出回應(yīng),從而使產(chǎn)品變得更好。這就是為什么多年來(lái)SQL Prompt已成為開(kāi)發(fā)T-SQL代碼的最佳工具之一的原因。
本教程內(nèi)容到這里就結(jié)束了,希望文章內(nèi)容對(duì)您有所幫助~您也可以下載SQL Prompt試用版進(jìn)行評(píng)估~
相關(guān)內(nèi)容推薦:
想要購(gòu)買(mǎi)SQL Prompt正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
1024致敬程序員,慧都18888元大禮包全場(chǎng)送,活動(dòng)詳情點(diǎn)擊下方圖片
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@ke049m.cn