I wanna update remote table with following code but I encounter this error:
`Msg 208, Level 16, State 1, Line 12
Invalid object name 'f1'.`
code:
declare @temp table
(
co_kargah bigint,
code_ostan nvarchar(10)
)
insert into @temp
select co_kargah,code_ostan
from Tbl_ghireHadese_Temp
where InsUpKey=2
update f1 /* Error location*/
set
f1.modate_mogharar=tbl_ghireHadese.modate_mogharar,
开发者_高级运维 f1.t_pm_mogharar=tbl_ghireHadese.t_pm_mogharar
from openquery([lnkworkersystem],'select * from Bazresi_Kar.dbo.Tbl_ghireHadese') f1
inner join @temp temp
on temp.co_kargah=f1.co_kargah
and temp.code_ostan=f1.code_ostan
and temp.t_bazresiFE=f1.t_bazresiFE
inner join tbl_ghireHadese
on temp.co_kargah=tbl_ghireHadese.co_kargah
and temp.code_ostan=tbl_ghireHadese.code_ostan
and temp.t_bazresiFE=tbl_ghireHadese.t_bazresiFE
The error is in the SET clause. You can't specify aliases in the column assign. There is no need because you've already told SQL Server what table in the UPDATE clause
Should be:
update f1
set
modate_mogharar = tbl_ghireHadese.modate_mogharar,
t_pm_mogharar = tbl_ghireHadese.t_pm_mogharar
from
....
Note: SQL Server doesn't always give the correct line number for errors
Edit: use 4 part object names as normal tables
...
FROM
lnkworkersystem.Bazresi_Kar.dbo.Tbl_ghireHadese
inner join
@temp temp on temp.co_kargah=f1.co_kargah
...
Also, your temp table has 3 columns in the JOIN but is only defined with 2. t_bazresiFE
is missing. So it will error again...
精彩评论