初識(shí)SQL Server代理&作業(yè)
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
一、前言別人寫的程序在數(shù)據(jù)庫中生成了一些表,并且會(huì)不停更新表中數(shù)據(jù)。 現(xiàn)在有個(gè)需求,定期根據(jù)表中的數(shù)據(jù)做一些運(yùn)算,然后重新生成一張表。我將新表的表名、字段給第三方使用。 關(guān)鍵是,我無法修改別人的代碼,好在我可以登錄該系統(tǒng)所運(yùn)行電腦的數(shù)據(jù)庫。 經(jīng)過一番搜索后,我發(fā)現(xiàn)了觸發(fā)器和SQL Server代理這兩種工具。進(jìn)一步分析后,覺得SQL Server代理可能更符合我的需求。 ?注意 本文不討論多SQL Server實(shí)例的情況。 由于使用場(chǎng)景較簡(jiǎn)單,本文只簡(jiǎn)述SQL Server代理及其組件,有關(guān)SQL Server代理安全性等拓展內(nèi)容不做介紹。 二、SQL Server代理SQL Server代理是一種微軟Windows服務(wù),用于執(zhí)行一些預(yù)先安排好的任務(wù),這些任務(wù)在SQL Server中稱為jobs(作業(yè))。 1. SQL Server代理的好處
2. SQL Server代理組件
?2.1. 作業(yè) Jobs & 作業(yè)步驟 Job Steps 作業(yè)是SQL Server代理執(zhí)行的一系列指定操作(這個(gè)一系列很重要,作業(yè)有點(diǎn)類似操作的容器,里面放了許多操作,所以是管理單元,而不是真正的執(zhí)行單元。而這一個(gè)個(gè)操作,就是下文的作業(yè)步驟)。使用作業(yè)可以定義各種任務(wù),并配置它們的執(zhí)行次數(shù)以及監(jiān)視它們的執(zhí)行狀態(tài)與執(zhí)行結(jié)果。作業(yè)可以在本地服務(wù)器上運(yùn)行,也可以在遠(yuǎn)程服務(wù)器上運(yùn)行。 可以用以下幾種方式來執(zhí)行作業(yè):
作業(yè)中的每個(gè)操作都稱為 job step(作業(yè)步驟)。 作業(yè)步驟是作業(yè)在數(shù)據(jù)庫或服務(wù)器上執(zhí)行的操作。每個(gè)作業(yè)必須至少有一個(gè)作業(yè)步驟(不然,空有一個(gè)容器,啥也做不了)。 作業(yè)步驟可以是:
每個(gè)作業(yè)步驟都運(yùn)行在專門的安全上下文(環(huán)境)中。對(duì)于使用T-SQL的作業(yè)步驟,使用EXECUTE AS語句為作業(yè)步驟設(shè)置安全上下文。其他類型的作業(yè)步驟,使用代理賬戶為作業(yè)步驟設(shè)置安全上下文。 ?2.2. 計(jì)劃 Schedules 計(jì)劃(表)(schedule,其實(shí)在計(jì)算機(jī)中,我更喜歡叫它調(diào)度)指定了作業(yè)何時(shí)運(yùn)行。在一個(gè)計(jì)劃上可以運(yùn)行多個(gè)作業(yè),一個(gè)作業(yè)也可以被多個(gè)計(jì)劃應(yīng)用。計(jì)劃可以定義作業(yè)運(yùn)行的時(shí)間條件,如:
2.3. 警報(bào) Alerts 警報(bào)(alert) 是對(duì)特定事件的自動(dòng)響應(yīng)。事件可以是啟動(dòng)的作業(yè)或達(dá)到閾值的系統(tǒng)資源。你可以定義警報(bào)發(fā)生的條件。 警報(bào)可以響應(yīng)以下條件:
警報(bào)可以執(zhí)行以下操作:
2.4. 操作員 Operators 操作員(operator) 為負(fù)責(zé)維護(hù)SQL Server實(shí)例的個(gè)人定義了聯(lián)系方式。在一些企業(yè)中,操作員職責(zé)被分配到了個(gè)人(責(zé)任到人)。尤其在有多個(gè)服務(wù)器的企業(yè)中,許多人可以分擔(dān)操作員的責(zé)任。操作員不包含安全信息,也不定義安全主體。 SQL Server能通過以下方式通知操作員:
?注意 如要使用網(wǎng)絡(luò)發(fā)送通知,必須在SQL Server代理所在的計(jì)算機(jī)上啟動(dòng)Windows Messenger服務(wù)。 如果發(fā)現(xiàn)尋呼機(jī)和網(wǎng)絡(luò)發(fā)送的功能無法使用,請(qǐng)不要驚訝。因?yàn)槲④浽缇陀?jì)劃從SQL Server代理中刪除這兩個(gè)功能了。 若要使用電子郵件或傳呼機(jī)向操作員發(fā)送通知,必須將SQL Server代理配置為使用數(shù)據(jù)庫郵件??梢詫⒉僮鲉T定義成一組個(gè)人的別名。這樣,該別名的所有成員就不會(huì)同時(shí)被驗(yàn)證。 ?3. 相關(guān)工作 要使SQL Server管理更加自動(dòng)化,通常要做以下工作:
?注意 對(duì)于SQL Server默認(rèn)實(shí)例,SQL Server服務(wù)的名稱為SQLSERVERAGENT。 對(duì)于命名了的實(shí)例,SQL Server代理服務(wù)名為SQLAgent$instancename。 在對(duì)代理有了一定了解后,再介紹一個(gè)例子,在代理中創(chuàng)建一個(gè)作業(yè),并添加一些腳本代碼。 三、創(chuàng)建并執(zhí)行作業(yè)本節(jié)講解如何在SQL Server Management Studio(SSMS)中創(chuàng)建一個(gè)SQL Server代理作業(yè),并在計(jì)劃中運(yùn)行它。(創(chuàng)建作業(yè)(包括其他組件,計(jì)劃、警報(bào)等等)的方式有很多,可以用SSMS圖形化操作,可以用Transact-SQL腳本操作,也可以用SQL Server Management Objects操作,這邊介紹SSMS圖形化操作,該方式比較通用直觀) 1. 創(chuàng)建作業(yè) 在SSMS中創(chuàng)建一個(gè)作業(yè),通常經(jīng)過以下幾步:
4.在新建作業(yè)對(duì)話框中的常規(guī)頁面,修改作業(yè)的常規(guī)屬性。(一般改個(gè)名稱即可) 5.在步驟頁面,組織作業(yè)步驟。 這邊著重介紹下T-SQL類型的作業(yè)步驟。創(chuàng)建T-SQL作業(yè)步驟時(shí),你必須:
你也可以選一個(gè)現(xiàn)有的T-SQL文件作為作業(yè)步驟的命令。 T-SQL作業(yè)步驟不使用SQL Server代理作為代理人。取而代之,作業(yè)步驟作為作業(yè)步驟的所有者運(yùn)行(?)。 6.在計(jì)劃頁面,組織作業(yè)計(jì)劃。 你可以選取一個(gè)已有的計(jì)劃或新建一個(gè)計(jì)劃。當(dāng)與計(jì)劃綁定后,該作業(yè)就會(huì)按計(jì)劃的時(shí)間執(zhí)行??梢姡鳂I(yè)和計(jì)劃是獨(dú)立的,作業(yè)定義了任務(wù)內(nèi)容,計(jì)劃定義了執(zhí)行時(shí)間。 7.在警報(bào)頁面,組織作業(yè)警報(bào)。 8.在通知頁面,設(shè)置代理在作業(yè)完成時(shí)執(zhí)行的操作。 9.在目標(biāo)頁面,管理作業(yè)目標(biāo)服務(wù)器。 10.配置完成, 點(diǎn)擊確定。 2. 執(zhí)行作業(yè) 在作業(yè)的常規(guī)頁面中,有個(gè)啟用選項(xiàng): 勾選啟用后,給作業(yè)綁定計(jì)劃或警報(bào),達(dá)到條件后(達(dá)到計(jì)劃指定時(shí)間或觸發(fā)警報(bào)),作業(yè)就會(huì)執(zhí)行。 四、結(jié)語SQL Server代理在實(shí)際開發(fā)中作用很大,許多操作都可以放到SQL Server代理中執(zhí)行,很多時(shí)候能事半功倍。 本文對(duì)SQL Server代理的基本組件和創(chuàng)建作業(yè)綁定計(jì)劃的簡(jiǎn)單使用場(chǎng)景進(jìn)行介紹。實(shí)際使用中的重頭戲應(yīng)該是腳本的編寫。 原文鏈接:https://blog.csdn.net/BadAyase/article/details/127241129 該文章在 2025/9/9 16:56:05 編輯過 |
關(guān)鍵字查詢
相關(guān)文章
正在查詢... |