16

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

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

以下命令在批处理文件中...

sqlcmd -E -i"C:\Users\Administrator\Desktop\test.sql" -o"C:\Users\Administrator\Desktop\dump.txt"

非常感谢

4

2 回答 2

17

如果您是 sql 实例的管理员(由于您使用的是 SQLExpress,我敢打赌您正尝试在自己的计算机上执行此操作,因此您的用户很有可能是 sql 实例的管理员)您不应该使用 -E at所有,忽略它。

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

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

sqlcmd.exe -S "." -d MY_DATABASE -Q "从 MY_TABLE 中选择 *"

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

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

于 2013-01-14T15:36:19.327 回答
0

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

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

于 2014-01-13T06:52:44.150 回答