使用SQL Server 2000創建臨時Job異步執行SQL腳本

發表于:2008-10-14來源:作者:點擊數: 標簽:sqlSQLSql腳本Job
關鍵字: sql 應用場景: 在龐大的 數據庫 中很多復雜的更新查詢非常的耗時。為了避免用戶長時間的等待,那些耗時的操作可以采用異步執行的方法,立刻返回執行信息給用戶,同時在數據庫后臺執行操作,等到執行完畢再更新數據表。 開發環境: SQL SERVER2000
關鍵字: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.anti-gravitydesign.com

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97