在 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 安排夜间作业的资源,但还没有想到如何执行此操作:
- https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-2017
- Scheduled run of stored procedure on SQL server
预期的结果是能够自动 运行 上面目录中的 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 服务器有问题,或者您可能没有管理员权限来执行诸如安排作业之类的事情(这是猜测)。
我有一个 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 安排夜间作业的资源,但还没有想到如何执行此操作:
- https://docs.microsoft.com/en-us/sql/ssms/agent/schedule-a-job?view=sql-server-2017
- Scheduled run of stored procedure on SQL server
预期的结果是能够自动 运行 上面目录中的 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 服务器有问题,或者您可能没有管理员权限来执行诸如安排作业之类的事情(这是猜测)。