Problem z pierwszym polega na tym, że to, co robisz, to USE 'myDB'
zamiast USE myDB
.przekazujesz ciąg; ale USE szuka wyraźnego odniesienia.
Ten ostatni przykład działa dla mnie.
declare @sql varchar(20)
select @sql = 'USE myDb'
EXEC sp_sqlexec @Sql
-- also works
select @sql = 'USE [myDb]'
EXEC sp_sqlexec @Sql