【发布时间】:2014-10-11 03:15:53
【问题描述】:
我从来没有这样做过,如果我很含糊,请道歉。
场景
我需要运行一长串INSERT SQL 查询。这些数据被插入到一个表中以供 Web 服务的客户端处理,即数据被上传到不同的服务器上,并且随着进程的进行,表会被清除。
我尝试过的
我试图像这样为每个Insert 语句添加延迟
WAITFOR DELAY '00:30:00'
INSERT INTO TargetTable (TableName1, Id, Type) SELECT 'tablename1', ID1 , 1 FROM tablename1
WAITFOR DELAY '00:30:00'
INSERT INTO TargetTable (TableName2, Id, Type) SELECT 'tablename2', ID2 , 1 FROM tablename2
但这样做的缺点是假设查询将在 30 分钟内完成执行,但事实可能并非如此。
问题
我过去曾手动运行查询,但这非常乏味。所以我想写一个程序来为我做这件事。 程序应该:
按给定顺序运行每个查询
等待运行下一个查询,直到前一个查询处理完毕,即直到目标表被清除。
我正在考虑一个脚本,我可以将它复制到命令提示符控制台、SQL 本身或其他任何东西中并运行。
我该怎么做? Windows 服务应用程序? Powershell 函数?
如果有任何建议让我开始,我将不胜感激。
【问题讨论】:
-
您可以只使用 DOS 批处理文件和 OSQL 命令行 SQL 工具来提交您的 SQL 吗?有必要让这更复杂吗?
-
@PhillipH 嗨,绝对没有必要让这变得比必要的更复杂。之前写过一个批处理文件,但是还是第一次听说OSQL这个工具。请您详细说明一下吗?
-
这在此处technet.microsoft.com/en-us/library/aa214012(v=sql.80).aspx 进行了记录,并随 SQL Server 提供。它允许您连接到服务器并针对服务器执行 T-SQL。它相当于 SQL Server 企业管理器中的查询窗口的命令行。
-
我明白了,谢谢。但是我如何确保在运行下一个查询之前处理每个查询?
标签: sql sql-server powershell automation windows-services