Само за да архивирам отговора на Брад, даден в коментарите, ето MVCE за извършване на цялата последователност на вмъкване в една динамична заявка. Според коментара на Крис, уверете се, че името на базата данни е в белия списък, тъй като заявката е уязвима за SqlInjection (за съжаление, имената на базата данни не могат да бъдат параметризирани в динамичен sql чрез sp_executesql
)
Дадено:
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)