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
Run Code Online (Sandbox Code Playgroud)
一些说明:
创建一个在启动时调用“C:\YourDirNameHere\TaskScript.vbs”的计划任务。VBScript 应该执行重复的任务执行(在这个例子中,它是一个 15 分钟的循环)
通过命令行(必须以管理员身份运行 cmd.exe):
schtasks.exe /create /tn "TaskNameHere" /tr "\"C:\YourDirNameHere\TaskScript.vbs\" " /sc ONSTARTUP
Run Code Online (Sandbox Code Playgroud)
示例 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
Run Code Online (Sandbox Code Playgroud)
RunSQLScript.bat:这个使用sqlcmd调用数据库实例并执行SQL脚本
@echo off
sqlcmd -S .\SQLEXPRESS -i %1
Run Code Online (Sandbox Code Playgroud)