Le problème avec le premier est que ce que vous faites est USE 'myDB'
plutôt que USE myDB
.vous passez une chaîne ; mais USE recherche une référence explicite.
Ce dernier exemple fonctionne pour moi.
declare @sql varchar(20)
select @sql = 'USE myDb'
EXEC sp_sqlexec @Sql
-- also works
select @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql