Sql 使用变量作为表名失败

Sql 使用变量作为表名失败,sql,sql-server,tsql,execute,Sql,Sql Server,Tsql,Execute,为什么此操作失败并显示以下错误消息: Msg 102,15级,状态1,第1行 “reporting_rawdata_v2”附近的语法不正确 该表的名称为“dbo.reporting_rawdata_v2”,但无论是否使用“dbo”,它仍然会失败 Use reporting2 Go Declare @Backupdate varchar(25), @sql NVARCHAR(max) Set @Backupdate = REPLACE(REPLACE(CAST(CONVERT(VARCHAR(

为什么此操作失败并显示以下错误消息:

Msg 102,15级,状态1,第1行 “reporting_rawdata_v2”附近的语法不正确

该表的名称为“dbo.reporting_rawdata_v2”,但无论是否使用“dbo”,它仍然会失败

Use reporting2 
Go

Declare @Backupdate varchar(25), @sql NVARCHAR(max)
Set @Backupdate = REPLACE(REPLACE(CAST(CONVERT(VARCHAR(20), SYSDATETIME(), 100) as varchar),' ','_'),':', '')
Select @Backupdate

SET @sql = 'Select * Into reporting_rawdata_BACKUP_' + @Backupdate + 'From reporting_rawdata_v2';
EXEC (@sql);

动态命名的表和来自的
之间没有空格

SET @sql = 'Select * Into reporting_rawdata_BACKUP_' + @Backupdate + ' From reporting_rawdata_v2';
EXEC (@sql);

没有“Into”是否可以工作?在“from”之前,尝试在最后一个字符串的开头添加一个空格?将exec更改为打印,以查看实际的sql是什么…在缺少某些标记后,应该直接修复,例如dbms。动态命名的表和“from”之间没有空格所以,是的,解决这个问题。我读得越多,我就越觉得自己走错了方向,这就更简单、更明显了。我对这个答案投了赞成票,删除了我的。