开发者

Update remote tables using linked server

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...

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜