Единственный способ сделать это - использовать несколько операторов. Используя динамический sql, вы можете сделать это, разделив каждый оператор в строке запроса точкой с запятой:
"DECLARE @ID int;INSERT INTO [Entry] (...) VALUES ...; SELECT @ID = scope_identity();INSERT INTO [TAGS] (ID_ENTRY) VALUES (@ID);"
Убедитесь, что вы поместили это в транзакцию, чтобы защитить от проблем параллелизма и сохранить все это на атомарном уровне. Вы также можете разбить это на два отдельных запроса, чтобы вернуть новое значение ID в середине, если хотите; просто убедитесь, что оба запроса находятся в одной транзакции.
Также: вы используете параметризованные запросы с вашим динамическим SQL, верно? Если это не так, я лично приду к вам и сотрясу вас 10000 раз мокрой лапшой, пока вы не покаетесь в своих небезопасных путях.