SQL Server作业调度和PHP

时间:2014-04-09 15:54:30

标签: sql-server tsql stored-procedures

我一直在开发一个应用程序,通过从SQL Server读取来在网站上显示图形。由于某些表非常大,我的SQL脚本需要几分钟才能执行,因此我设计了一个计划,通过每月执行一个作业来解决这个问题。我有我的T-SQL脚本来处理数据和其他脚本来创建和显示图形,所以很难完成。我遇到的问题是在SQL Server 2005中创建一个预定的作业(因为它是一台工作计算机而无法升级)。

我遇到了很多麻烦,因为我似乎没有安装创建作业或计划所需的存储过程。例如,当我跑:

USE TEST1 ;
GO
EXEC sp_add_job
@job_name = N'MY_FIRST_JOB2' ;
GO
EXEC sp_add_jobstep
@job_name = N'MY_FIRST_JOB2',
@step_name = N'Set database to read only',
@subsystem = N'TSQL',
@command = N'SELECT * FROM [TEST1].[dbo].[BACK1]', 
@retry_attempts = 5,
@retry_interval = 5 ;
GO

我收到错误,说无法找到存储过程sp_add_job和sp_add_jobstep。我尝试在存储过程之前放置[dbo]并没有帮助。当我检查我的可编程性时 - >存储过程 - >系统存储过程文件夹,有很多但没有工作或调度!有趣的是,当我跑了

SELECT * FROM [sys].[procedures];

我什么都没有,除了列标题之外没有一行。

当我尝试在SQL Server代理中使用该界面时,我能够创建一个作业并设置计划,但它没有执行。当我打开作业时,最后执行的框并不总是更新,即使它应该已执行。此外,在视图历史记录/日志中,由于不同的原因,我的尝试中只有少数出现(所有错误),有些是由于允许,即使我将用户设置为NT AUTHORITY \ SYSTEM。

这给我带来了两个问题:

1)有没有办法可以下载这些存储过程?

2)我还有其他办法吗?我可以访问SQLExpress,但由于它没有调度和SQL Server代理,我选择退出并选择更简单的路由。

我已经有一段时间了,而且我已经知道了。

1 个答案:

答案 0 :(得分:0)

问题是您引用的存储过程不是数据库的一部分。所有与作业相关的系统存储过程都在msdb数据库中。

正确呼叫的一个例子是:

EXEC msdb.dbo.sp_add_job @job_name = N'MY_FIRST_JOB2';