通过SQL Server代理从文件系统执行.sql文件

时间:2011-08-26 23:34:31

标签: sql-server sql-server-2008

有没有办法通过SQL Server代理执行我的硬盘驱动器上的.sql脚本,而不必使用xp_cmdshellsql_cmd?使用SQL Server 2008。

我正在寻找一个简单的解决方案,如:

include 'c:\mysql\test.sql'

谢谢!

2 个答案:

答案 0 :(得分:4)

也许您应该考虑使用Windows计划任务而不是SQL Server代理。无论你如何从磁盘上读取文件,它都会有相同类型的限制,阻止你使用xp_cmdshellsqlcmd(假设原因不仅仅是恐惧)。

答案 1 :(得分:0)

在现代版本的SSMS中,您可以选择.sql文件并将其直接导入到步骤中(有效地创建将代替运行的副本)。 正如Aaron所说,最好将代码安全地保存在服务器中并进行备份。

您始终可以保留一个在文件中创建作业和步骤的脚本,以便一次性创建(或在需要跨多个服务器部署的情况下)。 如果在代理对话框中编辑步骤令人沮丧,那么也许这是另一种选择。除非您做出努力来保存它,否则如果您每次只是简单地重新创建作业,您将失去历史。

如果只是脚本经常被修改以进行需要测试的更改,那么您可以考虑将xp_cmdshell / sqlcmd放入工作中,尽管它使很多更加脆弱wrt文件位置,访问权限,并有可能使您的错误处理工作更多。

您将需要检查文件系统访问是否已启用-许多sysadmin管理员希望禁用此功能,因为存在运行不受控制的风险。 因此,不要仅仅假设它可以在非您的服务器上运行!