Out*_*per 14 sql t-sql sql-server
SQL Server 2008 R2
这是一个简化的例子:
EXECUTE sp_executesql N'PRINT ''1st '' + convert(varchar, getdate(), 126) WAITFOR DELAY ''000:00:10'''
EXECUTE sp_executesql N'PRINT ''2nd '' + convert(varchar, getdate(), 126)'
Run Code Online (Sandbox Code Playgroud)
第一个语句将打印日期并在继续之前延迟10秒.第二个陈述应立即打印.
T-SQL的工作方式,第二个语句在第一个语句完成之前不会被评估.如果我将其复制并粘贴到新的查询窗口,它将立即执行.
问题是我还有其他更复杂的事情,需要传递给两个程序的变量.
我想要做的是:
也许有一种方法可以动态创建几个工作?
无论如何,我正在寻找一种简单的方法来做到这一点,而无需手动PRINT语句和复制/粘贴到另一个会话.
有没有办法在没有等待/并行的情况下执行EXEC?
Rem*_*anu 17
是的,有一种方法,请参阅异步程序执行.
但是,这可能不是你需要的.T-SQL是一种数据访问语言,当您考虑事务时,锁定和提交/回滚语义几乎不可能有并行作业.并行T-SQL例如与请求队列一起工作,其中每个请求是独立的,并且作业之间没有相关性.
你所描述的内容完全听起来不像是能够,也不应该实际上被贬低的东西.
如果您想要锁定一条记录以便可以对其执行语句,您可能希望将这些语句作为事务执行。
要并行执行 SQL,您需要并行化 SQL 调用,方法是在 Java、C++、perl 或任何其他编程语言中的单独线程/进程中执行 SQL(见鬼,在后台的 shell 脚本中启动“isql”将起作用)