以编程方式更改SQL Server中的序列

问题描述 投票:0回答:1

我正在准备一个数据迁移脚本,我需要将之前创建的序列更改为新值。

这是我到目前为止尝试的内容:

DECLARE @Curr_Sampling_Request_ID INT ;

SELECT @Curr_Sampling_Request_ID = MAX (Sampling_Request_ID)
  FROM [MyDB].[ABC].[T_DATA_Sampling_Requests] ;

DECLARE @Update_Sequence NVARCHAR(512) ;

SET @Update_Sequence = 
       N'ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH ' + 
       CAST(@Curr_Sampling_Request_ID AS VARCHAR) ;

print('Attempting: ' + @Update_Sequence) ;

EXEC @Update_Sequence ;

执行后,我收到以下错误消息(打印记录也显示):

正在尝试:ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805 Msg 203,Level 16,State 2,Line 10名称'ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805'不是有效的标识符。

注意:我也尝试过不使用临时字符串而不使用临时字符串,但收到了同样的错误。

sql sql-server sql-scripts
1个回答
1
投票

您使用了字符串查询,就像它是普通的存储过程一样。你应该做 :

EXECUTE sp_executesql @Update_Sequence
© www.soinside.com 2019 - 2024. All rights reserved.