在 SSMS 中自动执行 运行 SQL 查询

Automate Running SQL Queries in SSMS

我有一个 SQL 服务器数据库设置,我使用 SQL Server Management Studio 17 进行管理。

在那个数据库中,我有 27 个表,我每天早上通过 运行ning 非常简单的 OPENQUERY 脚本维护它们,效果如下:

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,然后右键单击我的数据库并点击 "New Query" 并复制 27 个单独的 SQL 脚本和 运行 它们是很麻烦的。我正在寻找一种自动化的方法。我保存这些脚本的目录如下所示:

我不知道这是否可以在 SSMS 或批处理脚本中实现。我想对于后者,一些伪代码看起来像:

connect to sql server instance

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

我尝试在 SSMS 中创建一个脚本,方法如下: Tasks -> Script Database -> 但是没有选项可以在相关表上执行 .sql 文件。

我曾尝试查看以下有关使用 T-SQL 安排夜间作业的资源,但还没有想到如何执行此操作:

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

所以基本上你必须创建一个 Powershell 脚本来调用和执行 sql 脚本。 之后,您可以将 Powrshell 脚本添加到任务计划程序。

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

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

不过,我会看看sqlcmd。只需制作一个批处理脚本并在任务计划程序中安排它(如果您使用 windows)。或者你可以使用

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

由此post。 Run all SQL files in a directory

您实际上无法通过对象资源管理器访问 SQL 服务器代理? 这位于 "Integration Services Catalog" 下面 请参阅下面突出显示的内容:

您在问题中描述由于某种原因无法访问它。如果您无法访问它,那么 SQL 服务器有问题,或者您可能没有管理员权限来执行诸如安排作业之类的事情(这是猜测)。