我已经建立了一个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脚本并运行它们。我正在寻找一种自动化的方法。我的目录包含以下脚本:
我不知道这是否可以在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进行。
答案 0 :(得分:2)
您实际上无法通过对象资源管理器访问SQL Server代理吗? 位于“集成服务目录”下 参见下面的突出显示:
您描述由于某种原因无法访问该问题。如果您无法访问它,则说明SQL Server出了点问题,或者您没有管理员权限来执行诸如计划作业之类的任务(在那儿猜测)。
答案 1 :(得分:1)
在SSMS中,您将有权使用“执行T-SQL语句任务”并将删除语句写入“常规”选项卡的“ SQL语句”字段中。
但是,我将看sqlcmd。只需制作一个批处理脚本并将其计划在“任务计划程序”中(如果使用的是Windows)。或者您可以使用
for %%G in (*.sql) do sqlcmd /S servername /d databaseName -E -i"%%G"
pause
答案 2 :(得分:0)
因此,基本上,您必须创建一个Powershell脚本来调用并执行sql脚本。 之后,您可以将Powrshell脚本添加到“任务计划程序”中。
答案 3 :(得分:0)
我建议您将这些脚本添加为SQL Server代理的作业。