Use
устанавливает контекст базы данных для текущего сеанса, в то время как в вашем операторе exec
вы указываете, какую базу данных использовать только для оператора. После оператора exec
контекст базы данных вашего сеанса не изменится на то, что вы запустили.
Итак, в вашем примере функциональной разницы нет. В более общем смысле, он довольно большой.
Вы также можете сделать это:
select * from MyDatabase.dbo.MyTable
Это будет извлекать данные из другой базы данных, чем ваш контекст. Вы также можете использовать это для объединения данных между базами данных, так же, как вы делаете обычные объединения.