Ваша проблема с USE
, из документации:
USE выполняется как во время компиляции, так и во время выполнения ...
Если указанная база данных не существует во время компиляции, запрос не будет выполнен. Это можно увидеть, выполнив следующий запрос:
IF 1 = 2
BEGIN
USE NonexistantDatabase
END
Этот запрос не выполняется, несмотря на то, что оператор USE
никогда не выполняется.
Вместо этого вы должны изменить свой запрос, чтобы использовать имена, полные базы данных, например:
INSERT INTO Destination.dbo.Table SELECT * FROM Source.dbo.Table