Bara för att backa upp Brads svar i kommentarerna, här är en MVCE för att göra hela infogningssekvensen i en enda dynamisk fråga. Enligt Kris kommentar, se till att databasnamnet är vitlistat, eftersom frågan är sårbar för SqlInjection (tyvärr kan databasnamn inte parametriseras i dynamisk sql via sp_executesql
)
Givet:
CREATE TABLE TableName
(
ID INT IDENTITY(1,1)
);
En enda batch kan köras:
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)