Problemet med førstnævnte er, at det du laver er USE 'myDB'
i stedet for USE myDB
.du sender en streng; men USE leder efter en eksplicit reference.
Sidstnævnte eksempel virker for mig.
declare @sql varchar(20)
select @sql = 'USE myDb'
EXEC sp_sqlexec @Sql
-- also works
select @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql