Bare for at tage backup af Brads svar i kommentarerne, her er en MVCE til at udføre hele indsættelsessekvensen i en enkelt dynamisk forespørgsel. I henhold til Kris' kommentar skal du sikre dig, at databasenavnet er hvidlistet, da forespørgslen er sårbar over for SqlInjection (desværre kan databasenavne ikke parametreres i dynamisk sql via sp_executesql
)
Givet:
CREATE TABLE TableName
(
ID INT IDENTITY(1,1)
);
En enkelt batch kan udføres:
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)