當前位置:ag真人国际官网-ag旗舰厅官方网站 » 編程語言 » sql定時執行語句

sql定時執行語句-ag真人国际官网

發布時間: 2024-11-08 10:29:36

❶ oracle中如何定時執行一條sql語句

通過網上查詢,找到一種方案,就是先在oracle裡面對要定時的sql寫成存儲過程,再用dbms_scheler對存儲過程進行定時執行。

資料庫中新建了一個表my_job_test

在資料庫中新建了一個表my_job_test

在資料庫中新建了一個表my_job_test

在plsql中,執行下面語句模擬存儲過程的調用,執行後要點提交才有反應

[sql] view plain

  • begin

  • insertintomy_job_test(num)values(1);

  • end;


  • 然後下面建立一個存儲過程job_test

    (注意,這里用戶需要create job許可權,可以用超級管理員用戶執行下面語句給指定用戶賦予該許可權)

    [sql] view plain

  • grantcreatejobto指定用戶名



  • [sql] view plain

  • sql>createorreplaceprocedure

  • job_test

  • begin

  • insertintomy_job_test(num)values(1);

  • end;


  • (此處要執行存儲過程不能用exec jb_test,這種執行方式只能在命令行中使用)
  • 使用dbms_scheduler進行定時,這里為每分鍾執行一次

    [sql] view plain

  • sql>begin

  • dbms_scheduler.create_job(

  • job_name=>'scheduler_test',

  • job_type=>'stored_procedure',

  • job_action=>'job_test',

  • start_date=>sysdate,

  • repeat_interval=>'freq=minutely;interval=1');

  • end;


  • 但是這樣子定時任務並不會執行。
  • 我們可以用下面的命令查看一下scheler的狀態

    [plain] view plain

  • sql>select*fromuser_scheduler_jobs;

  • 此時我們可以看到enable的狀態是false的,因此我們需要去啟動定時任務
  • [plain] view plain

  • sql>begin

  • dbms_scheduler.enable('scheduler_test');


  • dbms_scheler.enable('j_test'); --啟用jobs
    dbms_scheler.disable('j_test'); --禁用jobs
    dbms_scheler.run_job('j_test'); --執行jobs
    dbms_scheler.stop_job('j_test'); --停止jobs
    dbms_scheler.drop_job('j_test'); --刪除jobs


    然後再查詢job的enable裝態,發現為true了。

    然後查看my_job_test表,發現每分鍾會往裡面添加記錄。

    當需要修改定時任務或者調度的其他屬性時,可以用下面的

  • dbms_scheler.set_attribute('調度名','調度屬性','調度值');



  • 至此,定時任務完成。

❷ 怎麼使某一條sql語句每天定時執行

linux or unix系統中有一個叫crontag的東西。
你可以設定執行的時間,它就是每天循環執行了。
格式:(second hour date month week)
00 10 * * * /u01/app/cronjob/exe_select.sh
每天十點整執行一次

❸ 如何讓sql每天執行一下一個寫好的sql語句

可以設置定時任務,比較常用的是用sqlserver 代理新建作業。有時候資料庫自動備份也是用的這個。
還有一種比較復雜自己寫個程序,使用系統定時任務 定時執行。
創建sql server定時任務作業步驟如下:
1.要先安裝了sqlserver 代理服務
--2.滑鼠右擊【sql server 代理】,選擇【啟動(s)】,如已啟動,可以省略此步驟;
--3.展開【sql server 代理】列表,右擊【作業】--【新建作業】;
--3.1 在【常規】選項卡中:
-- 輸入作業名稱,如my job;
--3.2 在【步驟】選項卡中:
--3.2.1 點擊【新建】,輸入【步驟名稱】,如步驟1,類型默認t-sql腳本,也可以選擇ssis包等;
--3.2.2 在【資料庫】一欄選擇要作業處理的資料庫,在【命令】的右邊空白編輯欄輸入要執行的sql代碼,
exec p_name --如:執行一個p_name的存儲過程
-- 也可以點擊命令下面的【打開】,打開.sql腳本;
--3.2.3 輸入運行腳本後,建議點擊【分析】,確保腳本語法正確,然後點擊下面的【確定】按鈕;
--3.3 在【計劃】選項卡中:
--3.3.1 點擊【新建】,輸入【計劃名稱】,如計劃1,計劃類型默認是重復執行,也可以選擇執行一次等;
--3.3.2 在【頻率】--【執行】處選擇每天、每周或每月,以每天為例,間隔時間輸入間隔幾天執行一次,
-- 下面還可以選擇每天一次性執行或間隔一定的時間重復執行
--3.3.3 在【持續時間】中選擇計劃開始執行的【起始日期】和【截止日期】,然後點擊【確定】按鈕;
--注意要將服務設置為自動啟動,否則在重啟伺服器後作業就不運行了。
--啟動代理服務的方法:
--開始--運行--輸入services.msc--找到【sql server 代理】的服務並雙擊--【啟動類型】選擇自動--【確定】
--至此,定時作業已創建完畢。

❹ sql server 2000怎樣設置定時自動運行sql語句

如果在sql server 里需要定時或者每隔一段時間執行某個存儲過程或3200字元以內的sql語句時,

可以用管理->sql server代理->作業來實現。

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

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

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

描述[填寫本次工作詳細描述內容];

[ 創建作業分類的步驟:

sql server代理->作業->右鍵選所有任務->添加、修改、刪除 ]

3、新建作業屬性(步驟)->新建->步驟名[自定義第一步驟名稱]->類型[transact-sql(tsql)腳本]->

資料庫[要操作的資料庫]->命令

[ 如果是簡單的sql直接寫進去即可,也可用打開按鈕輸入一個已寫好的*.sql文件
如果要執行存儲過程,填
exec p_procere_name v_parameter1,[ v_parameter2…v_parametern]
]

->確定
(如果有多個步驟,可以再次調用下面的新建按鈕;也可以對已有的多個步驟插入、編輯、刪除);

4、建作業屬性(調度)->新建調度->名稱[自定義調度名稱]->啟用的方框內是勾號->調度->反復出現->

更改[調度時間表]->確定

(如果只要保存此作業,不要定時做可以把啟用的方框內是勾號去掉);

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

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

sqlserveragent服務必須正常運行,啟動它的nt登錄用戶要跟啟動sql server資料庫的nt登錄用戶一致。

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

最近在看作業歷史記錄時,發現有的作業記錄的歷史記錄多,有的作業記錄的記錄的歷史記錄少.

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

看了sql server的在線幫助文檔,裡面介紹說:

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

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

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

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

如果sql server伺服器改過機器名, 管理是舊名稱時建立的job的時候可能會遇到

錯誤14274: 無法添加、更新或刪除從msx伺服器上發起的作業(或其步驟或調度)

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

說sql server 2000系統里msdb..sysjobs 里originating_server 欄位里存的是原來的伺服器的名稱.

24x7在用的系統肯定不能按上面microsoft的文檔說的那樣把名字改回來又改過去。

於是想,msdb..sysjobs 能否update originating_server 欄位成現在在用的新伺服器名?

use msdb

select * from sysjobs

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

update sysjobs set originating_server='new_server_name'
where job_id='b23bbebe-a3c1-4874-a4ab-0e2b7cd01e14'

(所影響的行數為 1 行)

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

如果想把作業由一台機器遷移到另一台機器,可以先保留好創建作業的腳本, 然後在另一台機器上運行。

導出所有作業的創建腳本操作步驟:

管理->sql server代理->作業(滑鼠右鍵)->所有任務->生成sql腳本->保存到操作系統下的某個sql文件導出某一個作業的創建腳本操作步驟:

管理->sql server代理->作業->選中待轉移的作業(滑鼠右鍵)->所有任務->生成sql腳本->保存到os下的某個sql文件然後在目的伺服器上運行剛才保存下來的創建作業的sql腳本。

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

我們需要在目的伺服器上建立相關的windows用戶或者sql server資料庫登錄,

也可以修改創建作業的腳本, 把目的伺服器上不存在的用戶替換成已經有的用戶。

如果生成日誌的物理文件目錄不存在,也應該做相關的修改,例如d:區轉f:區等

字元串的 @command 命令里有分隔符號 go 也會出錯, 可以把它去掉)

熱點內容
發布:2024-11-19 10:23:05 瀏覽:875
接龍源碼 發布:2024-11-19 10:14:48 瀏覽:33
驅動軟體哪個安卓版好 發布:2024-11-19 10:08:28 瀏覽:703
伺服器一鍵搭建java環境 發布:2024-11-19 10:08:27 瀏覽:729
布丁少兒編程 發布:2024-11-19 09:57:11 瀏覽:98
vb資料庫數組 發布:2024-11-19 09:23:40 瀏覽:828
安卓游戲數據保存在哪裡找 發布:2024-11-19 09:22:02 瀏覽:310
解壓出來的文件亂碼 發布:2024-11-19 09:15:40 瀏覽:940
北航ftp是多少 發布:2024-11-19 09:15:32 瀏覽:822
瀏覽保存密碼如何取消 發布:2024-11-19 09:10:17 瀏覽:90
网站地图