将列数据从一个数据库传输到另一个
问题描述:
我试图将整个列的数据从备份数据库传输到当前生产数据库(早些时候我在生产中毁坏了此列,但更新有误)。我使用MS SQL Server 2005的将列数据从一个数据库传输到另一个
在这个例子中,我试图从DB2.Table1恢复 '列1' 到DB1.Table1:
begin transaction
update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = [DB2].[dbo].[Table1].[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId
commit transaction
对于我这个查询返回:
多部分标识符 “DB2.dbo.Table1.Column1”不能被绑定到 。
任何帮助,将不胜感激。
谢谢!
编辑:
感谢SQL威胁我得到了这个查询运行。谢谢!见下面的固定查询
begin transaction
update db1Alias
set db1Alias.[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId
commit transaction
问题是我没有使用我自己的声明别名在我的更新和设置语句。我甚至都不知道你应该使用别名“。
答
假设COLUMN1是列的真实姓名,那么问题可能是您使用在选择的别名,但不是在更新
这里是它应该是什么样子。我也用了新款JOIN
update db1Alias
set db1Alias.[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias
JOIN [DB2].[dbo].[Table1] db2Alias ON db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId
这里是你可以运行
第一次运行这个创建这些2个表为例
use tempdb
go
create table BlaTest(id int)
insert BlaTest values(1)
go
create table BlaTest2(id int)
insert BlaTest2 values(1)
go
现在,当您尝试这样做
update tempdb.dbo.BlaTest
set tempdb.dbo.BlaTest.id =tempdb.dbo.BlaTest2.id
from tempdb.dbo.BlaTest b
join tempdb.dbo.BlaTest2 a on b.id =a.id
消息4104,级别16,状态1,行2
多部分标识符“tempdb.dbo.BlaTest2.id”无法绑定。
但是如果你使用的名称...没问题
update b
set b.id =a.id
from tempdb.dbo.BlaTest b
join tempdb.dbo.BlaTest2 a on b.id =a.id
答
update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias, [DB2].[dbo].[Table1] db2Alias
where db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId
更好的将是
update [DB1].[dbo].[Table1]
set [DB1].[dbo].[Table1].[Column1] = db2Alias.[Column1]
from [DB1].[dbo].[Table1] db1Alias INNER JOIN [DB2].[dbo].[Table1] db2Alias
ON db1Alias.TeamId = db2Alias.TeamId
and db1Alias.IndividualId = db2Alias.IndividualId
SQL不从顶部到bottom..for例如FROM在SELECT ...之前运行 – SQLMenace 2010-09-02 00:17:06