Abychom zálohovali Bradovu odpověď uvedenou v komentářích, zde je MVCE provedení celé sekvence vkládání v jediném dynamickém dotazu. Podle Krisova komentáře se ujistěte, že název databáze je na bílé listině, protože dotaz je zranitelný vůči SqlInjection (bohužel názvy databází nelze parametrizovat v dynamickém sql pomocí sp_executesql
)
Vzhledem k:
CREATE TABLE TableName
(
ID INT IDENTITY(1,1)
);
Lze provést jednu dávku:
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)