コメントで与えられたブラッドの答えをバックアップするために、単一の動的クエリで挿入シーケンス全体を実行する MVCE を次に示します。 Kris のコメントによると、クエリが SqlInjection に対して脆弱であるため、データベース名がホワイト リストに登録されていることを確認してください (残念ながら、sp_executesql
を介して動的 SQL でデータベース名をパラメータ化することはできません)。 )
与えられた:
CREATE TABLE TableName ( ID INT IDENTITY(1,1) );
プレ>単一のバッチを実行できます:
DECLARE @strDBName VARCHAR(100) = 'MyDatabase'; Declare @Query Varchar(MAX) SET @Query = 'SET IDENTITY_INSERT '+ @strDBName +'..TableName ON; ' SET @Query = @Query + 'INSERT INTO '+ @strDBName +'..[TableName](ID) SELECT COALESCE(MAX(ID), 0)+1 FROM '+ @strDBName +'..TableName; ' SET @Query = @Query + 'SET IDENTITY_INSERT '+ @strDBName +'..TableName OFF;' EXEC(@Query)
プレ>