• Since this is a backup you are trying to run, here is another option:

    declare @dbname varchar(128),

    @filedate varchar(64);

    declare @diskfile varchar(256) = 'H:\Preupgrade\Backups\' + @dbname + '_' + @filedate;

    declare @filename varchar(256) = @dbname + @filedate;

    declare @SQLCmd varchar(max) =

    'BACKUP DATABASE @dbname

    TO DISK = @diskfile

    WITH NOFORMAT,

    NAME = @filename,

    SKIP,

    REWIND,

    NOUNLOAD,

    STATS = 10;';

    declare @params @varchar(max) = '@dbname varchar(128), @diskfile varchar(64), @filename varchar(256)';

    exec sp_executesql

    @SQLCmd,

    @params,

    @dbname = @dbname,

    @diskfile = @diskfile,

    @filename = @filename;