SQLServer 定時作業的設定方法

2022-03-08 03:24:34 字數 3891 閱讀 7326

如果在

sql server

裡需要定時或者每隔一段時間執行某個儲存過程或

3200

字元以內的

sql語句時,可以用管理

-sql server**-

作業來實現

1、管理-sql server**-作業(按滑鼠右鍵)- 新建作業

2、新建作業屬性(常規)-名稱[自定義本次作業的名稱]-啟用的方框內是勾號-分類處可選擇也可用預設的[未分類(本地)]-所有者預設為登入sql server使用者[也可選其它的登入]-描述[填寫本次工作詳細描述內容];

3、新建作業屬性(步驟)-新建-步驟名[自定義第一步驟名稱]-型別[transact-sql(tsql)指令碼]-資料庫[要操作的資料庫]-命令 [ 如果是簡單的sql直接寫進去即可,也可用開啟按鈕輸入乙個已寫好的.sql。檔案如果要執行儲存過程,填 exec p_procedure_name v_parameter1,[ v_parameter2…v_parametern] -確定 (如果有多個步驟,可以再次呼叫下面的新建按鈕;也可以對已有的多個步驟插入、、刪除

4、建作業屬性(排程)-新建排程-名稱[自定義排程名稱]-啟用的方框內是勾號-排程-反覆出現- 更改[排程時間表]-確定(如果只要儲存此作業,不要定時做可以把啟用的方框內是勾號去掉);

5、建作業屬性(通知)-用預設的通知方法就好[當作業失敗時,寫入windows應用程式系統日誌] -確定。

跟作業執行相關的一些sql server知識:

sql server agent

服務必須正常執行,啟動它的nt登入使用者要跟啟動sql server資料庫的nt登入使用者一致;

點作業右鍵可以檢視作業執行的歷史記錄情況,也可以立即啟動作業和停止作業。

在管理-sql server**-右鍵選屬性-作業系統-限制作業歷史記錄日誌的大小

作業歷史記錄日誌的最大大小(行數) ,預設為1000 。如果某台機器的作業數量很多,一定要提高它,例如為100000

每個作業歷史記錄日誌的最大行數,預設為100。如果作業每天執行兩次,需要保留乙個月的日誌,可以設為60

它們之間有乙個相互制約關係, 我們可以根據自己的需要來改.

如果sql server伺服器改過機器名,管理是舊名稱時建立的job的時候可能會遇到。錯誤14274: 無法新增、更新或刪除從msx伺服器上發起的作業(或其步驟或排程)。看了microsoft的文件:http:說sql server 2000系統裡msdb..sysjobs 裡originating_server 欄位裡存的是原來的伺服器的名稱。24x7在用的系統肯定不能按上面microsoft的文件說的那樣把名字改回來又改過去。於是想,msdb..sysjobs 能否update originating_server 欄位成現在在用的新伺服器名?

use msdbselect from sysjobs

找到originating_server 字段還是舊伺服器的job_id,然後執行update語句:

update sysjobs set originating_server=『new_server_name『where job_id=『b23bbebe-a 3c1-4874-a4ab-0e2b7cd01e14『

(所影響的行數為 1 行)

這樣就可以新增、更新或刪除那些曾經出error 14274 的作業了。

如果想把作業由一台機器遷移到另一台機器,可以先保留好建立作業的指令碼, 然後在另一台機器上執行。

匯出所有作業的建立指令碼操作步驟:

管理-sql server**-作業(滑鼠右鍵)-所有任務-生成sql指令碼-儲存到下的某個sql檔案 [page]

匯出某乙個作業的建立指令碼操作步驟:

管理-sql server**-作業-選中待轉移的作業(滑鼠右鍵)-所有任務-生成sql指令碼-儲存到os下的某個sql檔案

然後在目的伺服器上執行剛才儲存下來的建立作業的sql指令碼。( 如果建作業的使用者或者提醒的使用者不存在, 則會出錯; 我們需要在目的伺服器上建立相關的windows使用者或者sql server資料庫登入,也可以修改建立作業的指令碼,把目的伺服器上不存在的使用者替換成已經有的使用者。如果生成日誌的物理檔案目錄不存在,也應該做相關的修改,例如d:\區轉f:\區等字串的 @command 命令裡有分隔符號 go 也會出錯,可以把它去掉)

下面來看看如何按日期定期備份資料庫

通常備份的方式有兩種:手動備份和自動備份,如果資料庫伺服器

中有這麼多的資料庫需要備份,那麼手動備份必定是乙個很大的工作量,這個時候我們可以採用另外一種備份方式---定時自動備份

sqlserver的維護計畫裡面自帶了備份資料庫任務,但不會自動按日期命名,不方便,下面的方法是以儲存過程來解決的,以sql2000為例:

首先要確認sql server agent服務是在啟動狀態,

下一步,我們來建立作業,在建立作業之前,我們需要建立備份資料庫及命名的儲存過程

比如是對testdb操作,開啟查詢分析器,把下面的儲存過程拷到裡面執行下就行了,當然了,命名規則可以自動更改

這樣就建立了乙個backupdatabase的儲存過程。

下面來建立作業吧。

常規裡新增名稱,選擇下分類就行了,

下面的步驟很重要。

新增步驟的時候,有點很重要,就是執行剛才我們建立的儲存過程如圖

use [testdb]  

exec backupdatabase 'e:\sqldata\testdb\' 

最後設定下自動備份的時間,也就是排程下即可

講解SQL Server定時作業job的設定方法

如果在sql server 裡需要定時或者每隔一段時間執行某個儲存過程或3200字元以內的sql語句時,可以用管理 sql server 作業來實現。1 管理 sql server 作業 按滑鼠右鍵 新建作業 2 新建作業屬性 常規 名稱 自定義本次作業的名稱 啟用的方框內是勾號 分類處可選擇也可用...

講解SQL Server定時作業job的設定方法

如果在sql server 裡需要定時或者每隔一段時間執行某個儲存過程或3200字元以內的sql語句時,可以用管理 sql server 作業來實現。1 管理 sql server 作業 按滑鼠右鍵 新建作業 2 新建作業屬性 常規 名稱 自定義本次作業的名稱 啟用的方框內是勾號 分類處可選擇也可用...

SQL SERVER定時作業的設定方法

如果在sql server 裡需要定時或者每隔一段時間執行某個儲存過程或3200字元以內的sql語句時,可以用管理 sql server 作業來實現。1 管理 sql server 作業 按滑鼠右鍵 新建作業 2 新建作業屬性 常規 名稱 自定義本次作業的名稱 啟用的方框內是勾號 分類處可選擇也可用...