Tho*_*att 24 sql sql-server scheduled-tasks sql-server-express
如何在SQL Server Express Edition中每天的特定时间运行存储过程?
笔记:
相关问题:
Raj*_*ore 24
由于SQL Server Express不附带SQL代理,因此您可以使用Windows调度程序运行带有存储过程或SQL脚本的SQLCMD.
http://msdn.microsoft.com/en-us/library/ms162773.aspx
我发现以下机制对我有用.
USE Master
GO
IF  EXISTS( SELECT *
            FROM sys.objects
            WHERE object_id = OBJECT_ID(N'[dbo].[MyBackgroundTask]')
            AND type in (N'P', N'PC'))
    DROP PROCEDURE [dbo].[MyBackgroundTask]
GO
CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;
    -- The interval between cleanup attempts
    declare @timeToRun nvarchar(50)
    set @timeToRun = '03:33:33'
    while 1 = 1
    begin
        waitfor time @timeToRun
        begin
            execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
        end
    end
END
GO
-- Run the procedure when the master database starts.
sp_procoption    @ProcName = 'MyBackgroundTask',
                @OptionName = 'startup',
                @OptionValue = 'on'
GO
一些说明:
创建一个在启动时调用“C:\YourDirNameHere\TaskScript.vbs”的计划任务。VBScript 应该执行重复的任务执行(在这个例子中,它是一个 15 分钟的循环)
通过命令行(必须以管理员身份运行 cmd.exe):
schtasks.exe /create /tn "TaskNameHere" /tr "\"C:\YourDirNameHere\TaskScript.vbs\" " /sc ONSTARTUP
示例 TaskScript.vbs:这将使用 RunSQLScript.bat 静默执行您的自定义 SQL 脚本
Do While 1
    WScript.Sleep(60000*15)
    Set WshShell = CreateObject("WScript.Shell")
    WshShell.RUN "cmd /c C:\YourDirNameHere\RunSQLScript.bat C:\YourDirNameHere\Some_TSQL_Script.sql", 0
Loop
RunSQLScript.bat:这个使用sqlcmd调用数据库实例并执行SQL脚本
@echo off
sqlcmd -S .\SQLEXPRESS -i %1
| 归档时间: | 
 | 
| 查看次数: | 85603 次 | 
| 最近记录: |