此声明有效:
INSERT INTO TestDB2.dbo.MyTableName SELECT * FROM TestDB1.dbo2.MyTableName
此声明不起作用:
DECLARE @SourceDatabase varchar(50)
DECLARE @TargetDatabase varchar(50)
SET @SourceDatabase = 'TestDB1'
SET @TargetDatabase = 'TestDB2'
INSERT INTO @TargetDatabase.dbo.PrcConfiguration SELECT * FROM @SourceDatabase.sppm.CONFIGURATION
OR without the '@'
INSERT INTO TargetDatabase.dbo.PrcConfiguration SELECT * FROM SourceDatabase.dbo1.CONFIGURATION
dbo和dbo1是架构。
我想使用相同的表将以后的数据从多个表从一个数据库移动到另一个数据库。
我错了什么?
答案 0 :(得分:1)
您无法在变量中的此类查询中传递数据库名称,而是使用动态查询:
DECLARE @SourceDatabase varchar(50)
DECLARE @TargetDatabase varchar(50)
DECLARE @sql NVARCHAR(MAX)
SET @SourceDatabase = 'TestDB1'
SET @TargetDatabase = 'TestDB2'
SET @sql = N'INSERT INTO ['+@TargetDatabase+N'].dbo.PrcConfiguration SELECT * FROM ['+@SourceDatabase+N'].sppm.CONFIGURATION'
exec(@sql)