【问题标题】:WaitFor Delay not working in Azure SQL DWWaitFor 延迟在 Azure SQL DW 中不起作用
【发布时间】:2018-07-04 03:10:09
【问题描述】:

我正在尝试在连接到 Azure SQL DW 的 SSMS 中运行这个简单的代码 它失败了。我尝试了一些不同的变体,但它们似乎都不起作用。

BEGIN
PRINT 'Hello ';
WAITFOR DELAY '00:00:02'
PRINT 'Another';
END

Msg 103010, Level 16, State 1, Line 47
Parse error at line: 2, column: 16: Incorrect syntax near ';'.

【问题讨论】:

  • 我能问一下这个命令的用例是什么吗?不仅运行成本高,而且并发查询的最大值也很低,只有 32 个。为什么要使用价值数千美元的 CPU、RAM 和 SSD 来等待?
  • 我已存储 proc 活动,这是 ADF 管道中用于调整 ADW 单元大小的第一个活动。我想在运行任何查询之前等待此调整大小完成。该管道每天运行一次
  • 您最好使用 Powershell cmdlet 扩展您的仓库,例如 Set-AzureRmSqlDatabase -DatabaseName "yourDW" -ServerName "yourServer" -RequestedServiceObjectiveName "DW400"

标签: azure-sqldw parallel-data-warehouse


【解决方案1】:

正确。目前,Azure SQL DW 不支持 WAITFOR 语句。请注意顶部附近此语句的 documentation,它说明此语句是否“适用于”Azure SQL DW。

请为此feature suggestion 投票,以帮助 Microsoft 优先考虑此增强功能。

它可能对你帮助不大,但你可以在单独的连接下连接到主数据库并运行WAITFOR 语句。

【讨论】:

    【解决方案2】:

    在我们拥有这个简单的内置函数之前,这是一个血腥的解决方法:

    1- 创建一个名为“spWait”的 Proc,如下所示:

    CREATE PROC spWait @Seconds INT
    AS
    BEGIN
    
        DECLARE @BEGIN DATETIME
        DECLARE @END DATETIME 
    
        SET @BEGIN = GETDATE()
        SET @END = DATEADD("SECOND",@Seconds,@BEGIN)
    
        WHILE (@BEGIN<@END)
        BEGIN   
            SET @BEGIN=GETDATE()
        END
    
    END
    

    2- 在你的命令之间调用它

    --Do this
    
    EXEC spWait 3
    
    --Do that
    

    【讨论】:

      猜你喜欢
      • 2017-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多