2013-07-11 39 views
0

我有一個鏈接的服務器,我必須更新數據或插入來自我的數據庫的新數據。 所以,我必須在SQL中定義一個查詢來做到這一點 我已經在網上搜索,但我發現任何解決方案的工作。 有人可以幫我嗎?如何在鏈接服務器上進行UPDATE/INSERT查詢?

假設我linkedServer的名稱是AAA和我有更新的鏈接服務器的表是BBB,我試着用

UPDATE AAA.BBB AS I 
SET 
    I.X = @MYVALUEX 
    I.Y = @MYVALUEY 
WHERE 
    ... 

,但它不工作。

在此先感謝您的任何建議,

德博拉

+0

無論何時您查詢鏈接的服務器,您都需要使用4部分名稱(服務器,數據庫,模式,表名)。您還需要確保鏈接的服務器實際上已安裝。 – HLGEM

+0

鏈接的服務器已建立。我檢查RPC和RPC-Out屬性,並將它們設置爲True。我不明白爲什麼,在openquery函數中使用select,一切正常,但是當我定義更新查詢時,它告訴我我正在使用無效的對象名稱。通過鏈接的服務器鏈接的數據庫(以及我希望應用更改的數據庫)是Oracle數據庫,而我正在使用SQL。可能這可能是問題? – Deby

回答

0

刪除「AS」的一部分,「作爲」可以在SELECT語句中使用,而不是在更新,這是一個別名,沒有理由放棄之一,因爲你沒有一個結果,也改變IX X和IY爲Y

1
update [linked-server].dbname.dbo.tablename 
... 
where 
... 

不要改變dbo

+0

如果你想別名做到這一點。更新我設置...從table1作爲我.... – maSTAShuFu

+0

我試圖用你的建議,但它不工作!我得到以下錯誤:「鏈接服務器」AAA「的OLE DB提供程序的架構或目錄的使用無效OraOLEDB.Oracle」提供了一個由四部分組成的名稱,但提供程序不公開必要的接口以使用目錄或架構「。我該如何解決? – Deby

+0

哦,可能不適用於oracle。 – maSTAShuFu

1

我使用EXEC命令解決我的問題:

exec('update BBB 
    set X = ''aaaaaa'' 
    WHERE Y = ''bbbbbb''') AT [AAA] 

你怎麼看待這個解決方案是什麼?

+0

爲此,需要確保鏈接服務器屬性中的RPC和RPC輸出選項設置爲True(服務器選項頁面) –

相關問題