Aby poprzeć odpowiedź Brada podaną w komentarzach, oto MVCE wykonania całej sekwencji wstawiania w jednym dynamicznym zapytaniu. Zgodnie z komentarzem Krisa, upewnij się, że nazwa bazy danych znajduje się na białej liście, ponieważ zapytanie jest podatne na SqlInjection (niestety, nazw baz danych nie można sparametryzować w dynamicznym sql za pomocą sp_executesql
)
Biorąc pod uwagę:
CREATE TABLE TableName
(
ID INT IDENTITY(1,1)
);
Można wykonać jedną partię:
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)