明輝手游網(wǎng)中心:是一個免費提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺!

SQL SERVER定時作業(yè)的設(shè)置方法

[摘要]如果在SQL Server 里需要定時或者每隔一段時間執(zhí)行某個存儲過程或3200字符以內(nèi)的SQL語句時,可以用管理->SQL Server代理->作業(yè)來實現(xiàn)。1、管理->SQL Server代理->作業(yè)(按鼠標(biāo)右鍵)->新建作業(yè)->2、新建作業(yè)屬性(常規(guī))-&g...
    如果在SQL Server 里需要定時或者每隔一段時間執(zhí)行某個存儲過程或3200字符以內(nèi)的SQL語句時,

可以用管理->SQL Server代理->作業(yè)來實現(xiàn)。

1、管理->SQL Server代理->作業(yè)(按鼠標(biāo)右鍵)->新建作業(yè)->

2、新建作業(yè)屬性(常規(guī))->名稱[自定義本次作業(yè)的名稱]->啟用的方框內(nèi)是勾號->

分類處可選擇也可用默認(rèn)的[未分類(本地)]->所有者默認(rèn)為登錄SQL Server用戶[也可選其它的登錄]->

描述[填寫本次工作詳細(xì)描述內(nèi)容];

[ 創(chuàng)建作業(yè)分類的步驟:

  SQL Server代理->作業(yè)->右鍵選所有任務(wù)->添加、修改、刪除 ]

3、新建作業(yè)屬性(步驟)->新建->步驟名[自定義第一步驟名稱]->類型[Transact-SQL(TSQL)腳本]->

   數(shù)據(jù)庫[要操作的數(shù)據(jù)庫]->命令
   
     [ 如果是簡單的SQL直接寫進去即可,也可用打開按鈕輸入一個已寫好的*.sql文件
       如果要執(zhí)行存儲過程,填
       exec p_procedure_name v_parameter1,[ v_parameter2…v_parameterN]
      ]
      
   ->確定
   (如果有多個步驟,可以再次調(diào)用下面的新建按鈕;也可以對已有的多個步驟插入、編輯、刪除);

4、建作業(yè)屬性(調(diào)度)->新建調(diào)度->名稱[自定義調(diào)度名稱]->啟用的方框內(nèi)是勾號->調(diào)度->反復(fù)出現(xiàn)->

   更改[調(diào)度時間表]->確定
   
   (如果只要保存此作業(yè),不要定時做可以把啟用的方框內(nèi)是勾號去掉);

5、建作業(yè)屬性(通知)->用默認(rèn)的通知方法就好[當(dāng)作業(yè)失敗時,寫入Windows應(yīng)用程序系統(tǒng)日志] ->確定。

跟作業(yè)執(zhí)行相關(guān)的一些SQL Server知識:

SQLSERVERAGENT服務(wù)必須正常運行,啟動它的NT登錄用戶要跟啟動SQL Server數(shù)據(jù)庫的NT登錄用戶一致。

點作業(yè)右鍵可以查看作業(yè)執(zhí)行的歷史記錄情況,也可以立即啟動作業(yè)和停止作業(yè)。


最近在看作業(yè)歷史記錄時,發(fā)現(xiàn)有的作業(yè)記錄的歷史記錄多,有的作業(yè)記錄的記錄的歷史記錄少.

如何能使某些作業(yè)按各自的需求,保留一段時間.比如保留一個月的歷史記錄.

看了SQL Server的在線幫助文檔,里面介紹說:

在管理->SQL Server代理->右鍵選屬性->作業(yè)系統(tǒng)->限制作業(yè)歷史記錄日志的大小->

作業(yè)歷史記錄日志的最大大小(行數(shù))    默認(rèn)為1000    如果某臺機器的作業(yè)數(shù)量很多,一定要提高它,例如為100000

每個作業(yè)歷史記錄日志的最大行數(shù)      默認(rèn)為100     如果作業(yè)每天執(zhí)行兩次,需要保留一個月的日志,可以設(shè)為60

它們之間有一個相互制約關(guān)系, 我們可以根據(jù)自己的需要來改.


如果SQL Server服務(wù)器改過機器名, 管理是舊名稱時建立的job的時候可能會遇到

錯誤14274: 無法添加、更新或刪除從MSX服務(wù)器上發(fā)起的作業(yè)(或其步驟或調(diào)度)

看了Microsoft的文檔:http://support.microsoft.com/default.aspx?scid=kb;en-us;281642

說SQL Server 2000系統(tǒng)里msdb..sysjobs 里originating_server 字段里存的是原來的服務(wù)器的名稱.

24X7在用的系統(tǒng)肯定不能按上面Microsoft的文檔說的那樣把名字改回來又改過去。

于是想,msdb..sysjobs 能否update originating_server 字段成現(xiàn)在在用的新服務(wù)器名?

use msdb

select * from sysjobs

找到originating_server 字段還是舊服務(wù)器的job_id, 然后執(zhí)行update語句:

update sysjobs set originating_server='new_server_name'
where job_id='B23BBEBE-A3C1-4874-A4AB-0E2B7CD01E14'

(所影響的行數(shù)為 1 行)

這樣就可以添加、更新或刪除那些曾經(jīng)出error 14274 的作業(yè)了。


如果想把作業(yè)由一臺機器遷移到另一臺機器,可以先保留好創(chuàng)建作業(yè)的腳本, 然后在另一臺機器上運行。

導(dǎo)出所有作業(yè)的創(chuàng)建腳本操作步驟:

  管理->SQL Server代理->作業(yè)(鼠標(biāo)右鍵)->所有任務(wù)->生成SQL腳本->保存到操作系統(tǒng)下的某個sql文件

導(dǎo)出某一個作業(yè)的創(chuàng)建腳本操作步驟:
  
  管理->SQL Server代理->作業(yè)->選中待轉(zhuǎn)移的作業(yè)(鼠標(biāo)右鍵)->所有任務(wù)->生成SQL腳本->保存到OS下的某個sql文件

然后在目的服務(wù)器上運行剛才保存下來的創(chuàng)建作業(yè)的sql腳本。

( 如果建作業(yè)的用戶或者提醒的用戶不存在, 則會出錯;

  我們需要在目的服務(wù)器上建立相關(guān)的WINDOWS用戶或者SQL Server數(shù)據(jù)庫登錄,

  也可以修改創(chuàng)建作業(yè)的腳本, 把目的服務(wù)器上不存在的用戶替換成已經(jīng)有的用戶。
  
  如果生成日志的物理文件目錄不存在,也應(yīng)該做相關(guān)的修改,例如d:\區(qū)轉(zhuǎn)f:\區(qū)等
  
  字符串的 @command 命令里有分隔符號 go 也會出錯, 可以把它去掉)