小编Pat*_*ele的帖子

无法停止“ADD PERIOD”的执行

我正在尝试有条件地执行一个ALTER TABLE命令(准确地说是这个)。但是,我无法将其ADD PERIOD设为有条件的,我怀疑这可能是一个错误。

如果PERIOD表中已经存在,这是我尝试跳过执行的内容。所有这些都会引发相同的错误:

消息 13597,级别 16,状态 2,第 xx 行

临时 SYSTEM_TIME 时间段已在表 'msdb.dbo.sysjobhistory' 上定义。

  1. 仅在PERIOD当前不存在时添加:

    if not exists(select 1 from sys.periods where object_id = OBJECT_ID('sysjobhistory'))
        ALTER TABLE [dbo].[sysjobhistory]
        ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
    
    Run Code Online (Sandbox Code Playgroud)

    这引发了错误。

  2. 由于上述方法不起作用,我想确保我的IF语句正确评估,所以我尝试了:

    if 1=2
        ALTER TABLE [dbo].[sysjobhistory]
        ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime)
    
    Run Code Online (Sandbox Code Playgroud)

    但这也引发了错误。

  3. 使用SET NOEXEC ON的代码停止执行

    set noexec ON
        ALTER TABLE [dbo].[sysjobhistory]
        ADD PERIOD FOR SYSTEM_TIME (StartTime, EndTime) …
    Run Code Online (Sandbox Code Playgroud)

sql-server azure-sql-database

4
推荐指数
1
解决办法
289
查看次数

标签 统计

azure-sql-database ×1

sql-server ×1