以编程方式更改 SQL 服务器中的序列
Programmatically alter a sequence in SQL Server
我正在准备一个数据迁移脚本,我需要在其中将之前创建的序列更改为新值。
这是我到目前为止尝试过的方法:
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 ;
执行后,我收到以下错误消息(还显示了打印记录):
Attempting: ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805
Msg 203, Level 16, State 2, Line 10
The name 'ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805' is not a valid identifier.
注意:我也尝试过不使用临时字符串而不使用临时字符串,但是收到同样的错误。
您将字符串查询当作普通存储过程来使用。
你应该这样做:
EXECUTE sp_executesql @Update_Sequence
我正在准备一个数据迁移脚本,我需要在其中将之前创建的序列更改为新值。
这是我到目前为止尝试过的方法:
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 ;
执行后,我收到以下错误消息(还显示了打印记录):
Attempting: ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805 Msg 203, Level 16, State 2, Line 10 The name 'ALTER SEQUENCE [S_DATA_Sampling_Requests] RESTART WITH 2848805' is not a valid identifier.
注意:我也尝试过不使用临时字符串而不使用临时字符串,但是收到同样的错误。
您将字符串查询当作普通存储过程来使用。 你应该这样做:
EXECUTE sp_executesql @Update_Sequence