Database 将列数据从一个数据库传输到另一个数据库
我正试图将整个专栏的数据从备份数据库传输到当前的生产数据库(当天早些时候,我在生产中用一个糟糕的更新破坏了这个专栏)。我正在使用MS SQL Server 2005 在本例中,我尝试将“Column1”从DB2.Table1恢复到DB1.Table1:Database 将列数据从一个数据库传输到另一个数据库,database,sql-server-2005,tsql,Database,Sql Server 2005,Tsql,我正试图将整个专栏的数据从备份数据库传输到当前的生产数据库(当天早些时候,我在生产中用一个糟糕的更新破坏了这个专栏)。我正在使用MS SQL Server 2005 在本例中,我尝试将“Column1”从DB2.Table1恢复到DB1.Table1: begin transaction update [DB1].[dbo].[Table1] set [DB1].[dbo].[Table1].[Column1] = [DB2].[dbo].[Table1].[Column1] from [DB
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
问题是我没有在update和set语句中使用自己声明的别名。我甚至在声明alias之前都不知道你应该使用它。也许你应该创建这个列 输入以下内容:
select * from information_schema.columns
where table_name = 'Table1'
您看到名为column1的列了吗?也许您应该创建该列 输入以下内容:
select * from information_schema.columns
where table_name = 'Table1'
是否看到名为column1的列?假设column1是该列的真实名称,则问题可能是您在选择中使用了别名,但在更新中没有使用别名 下面是它的外观…我还使用了一种新的样式连接
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
下面是一个您可以运行的示例
首先运行此命令创建这两个表
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
假设column1是列的真实名称,那么问题可能是您在select中使用了别名,但在更新中没有使用别名 下面是它的外观…我还使用了一种新的样式连接
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
下面是一个您可以运行的示例
首先运行此命令创建这两个表
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 INNER JOIN [DB2].[dbo].[Table1] db2Alias
ON 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
也可能是因为别名也可能是因为别名我在from语句中定义别名,因此我认为这不是问题所在。更新了一个示例,您可以运行该示例,以便您可以看到问题所在isI在from语句中定义别名,所以我不认为这是问题所在。更新了一个示例,您可以运行它,这样您就可以看到问题所在issql不会从上到下运行。例如,在选择之前运行from…sql不会从上到下运行。例如,from在选择之前运行。。。