在SSMS中自动运行SQL查询

时间:2019-04-01 13:06:10

标签: sql-server sql-server-2012 scheduled-tasks ssms

我已经建立了一个SQL Server数据库,可以使用SQL Server Management Studio 17进行管理。

在该数据库中,我每天早晨通过运行非常简单的OPENQUERY脚本来维护27个表,其效果如下:

DROP TABLE IF EXISTS [databasename].[dbo].[table27]
SELECT * INTO  [databasename].[dbo].[table27] FROM OPENQUERY(OracleInstance, '

SELECT
  table27.*

FROM
  table27
    INNER JOIN table26 ON table27.criteria = table26.criteria

WHERE
    < filter >
    < filter >

  ');

这很好用!但是,每天早上都很麻烦,登录到SSMS,然后右键单击我的数据库并单击“新建查询”,然后复制27个单独的SQL脚本并运行它们。我正在寻找一种自动化的方法。我的目录包含以下脚本:
enter image description here

我不知道这是否可以在SSMS或批处理脚本中实现。我会为后者想象一些伪代码,如下所示:

connect to sql server instance

given instance:
        for each sql_script in directory:
                sql_script.execute

我尝试通过以下方法在SSMS中创建脚本: Tasks -> Script Database -> 但是没有选项可以在有问题的表上执行.sql文件。

我尝试查看以下有关使用T-SQL安排夜间作业的资源,但对如何做到这一点没有任何运气:

预期结果将是能够每天一次(最好在美国东部标准时间上午6:00)自动运行以上目录中的27个sql查询以更新SQL Server中的表。我的主要问题是我不能访问SQL Server Management Studio中的任何东西。我无法访问配置管理器来使用SQL Server代理之类的功能。因此,如果我要安排任务,则需要通过SSMS进行。

4 个答案:

答案 0 :(得分:2)

您实际上无法通过对象资源管理器访问SQL Server代理吗? 位于“集成服务目录”下 参见下面的突出显示:

enter image description here

您描述由于某种原因无法访问该问题。如果您无法访问它,则说明SQL Server出了点问题,或者您没有管理员权限来执行诸如计划作业之类的任务(在那儿猜测)。

答案 1 :(得分:1)

在SSMS中,您将有权使用“执行T-SQL语句任务”并将删除语句写入“常规”选项卡的“ SQL语句”字段中。

但是,我将看sqlcmd。只需制作一个批处理脚本并将其计划在“任务计划程序”中(如果使用的是Windows)。或者您可以使用

for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G" pause

此帖子。 Run all SQL files in a directory

答案 2 :(得分:0)

因此,基本上,您必须创建一个Powershell脚本来调用并执行sql脚本。 之后,您可以将Powrshell脚本添加到“任务计划程序”中。

答案 3 :(得分:0)

我建议您将这些脚本添加为SQL Server代理的作业。