使用Windows任务计划程序执行存储过程

时间:2013-01-14 15:07:37

标签: sql-server stored-procedures scheduled-tasks

我一直在尝试设置一个计划,以便在Windows任务计划程序中每小时运行一次存储过程(因为我使用的是SQL Express并且无法安装第三方工具),但在尝试了各种方法(如运行来自任务调度程序的.bat文件,从任务调度程序打开SqlCmd实用程序并传递命令行语法或.sql脚本文件我没有运气。

我知道这可以做到,因此我确信这是我错过的,但如果有人可以分享他们的经验,我会非常感激。

非常感谢

2 个答案:

答案 0 :(得分:12)

如果您是sql实例的管理员(因为您使用的是SQLExpress,我打赌您试图在自己的计算机上执行此操作,因此您的用户很可能是sql实例的管理员)您不应该使用-E根本就是忽略它。

其次,即使您在本地工作,也请指定服务器。

从一个简单的sql命令开始,如下所示:

  

sqlcmd.exe -S“。” -d MY_DATABASE -Q“SELECT * FROM MY_TABLE”

用您的dbname和表名替换MY_DATABASE和MY_TABLE。确保您可以从命令行运行它。它应该返回表中的数据。 (注意命令行选项区分大小写,因此-s与-S不同)

最后,不要尝试通过任务计划程序提供参数。将包含所有参数的命令放在.bat文件中,然后从任务调度程序运行批处理。

答案 1 :(得分:-1)

我最近遇到了类似的问题,我的经验可能对您有所帮助。我正在调用一个小应用程序,即批处理文件中的EXE。我正在安排批处理文件从Windows任务计划程序运行。该应用程序使用Windows身份验证访问SQL数据。 我可以直接运行应用程序,即单击EXE运行它。 我可以从批处理文件中运行该应用程序。 但是,如果我试图运行计划任务,它似乎开始但没有做任何事情并且没有发现我能找到的错误。 我发现如果我将应用程序更改为使用SQL身份验证运行,则可以从任务计划程序运行。

我怀疑从Windows无法识别的任务计划程序运行时,Windows身份验证的上下文存在一些问题。