關鍵字:sql
應用場景:在龐大的數據庫中很多復雜的更新查詢非常的耗時。為了避免用戶長時間的等待,那些耗時的操作可以采用異步執行的方法,立刻返回執行信息給用戶,同時在數據庫后臺執行操作,等到執行完畢再更新數據表。
開發環境:
SQL SERVER2000 .NET
解決方案:
在SQL SERVER2000中創建一個臨時的Job,(或者固定的Job,根據具體的應用場景),傳遞需要執行的SQL batch腳本,然后啟動這個Job。這樣就可以在數據庫獲得異步調用的功能了。由于創建的是臨時的Job,
SQL SERVER在該Job運行結束以后會自動刪除該Job。
缺點:該存儲過程必須指定數據庫的名字
====================================================================================
/******************************************************************************
* Author: iret
* Desc: Create temporary job to provide asynchronously invoking SQL batch
* 在SQL SERVER 2000中創建用于執行異步調用的臨時Job
* @EXECSQL: Transact-SQL batch
* Eample: EXEC dbo.AsynchronousInvoking @EXECSQL = 'UPDTAE customer SET balance = 0'
* 缺點:該存儲過程必須指定數據庫的名字
* Modified Date: 2004/11/03
******************************************************************************/
CREATE Procedure dbo.AsynchronousInvoking
@EXECSQL nvarchar(4000)
AS
BEGIN TRANSACTION
DECLARE @JobID BINARY(16)
DECLARE @ReturnCode INT
SELECT @ReturnCode = 0
BEGIN
-- Add the job
EXECUTE @ReturnCode = msdb.dbo.sp_add_job @job_id = @JobID OUTPUT ,
@job_name = N'temp_sqljob',
@owner_login_name = N'',
@description = N'description for job', -- the description of the job
@category_name = N'[Uncategorized (Local)]',
@enabled = 1,
@notify_level_email = 0,
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/