簡體   English   中英

使用OPENQUERY更新鏈接服務器上的表

[英]Update a table on a Linked Server using OPENQUERY

我有兩個服務器: SQLSERVER01SQLSERVER02 ,我正在嘗試從SERVER02更新SERVER01數據( SERVER01是鏈接服務器)。

我的更新查詢當前是動態的,看起來像這樣

DECLARE @SQL NVARCHAR(MAX)
DECLARE @ID INT

SET @ID = 1

Set @SQL = 'Update SERVER01.MyDatbase.dbo.MyTable
            set ModifiedDate = GetDate(), SomeOtherValue = ''xyz''
            Where Id = ' Convert(varchar(10), @ID)

如果我現在打電話

EXEC(@SQL) 

它有時會起作用,但有時它會掛在那里很久了,當我運行sp_active我看到了PREEMPTIVE_OLEDBOPS

所以,然后我嘗試使用開放查詢,如下所示

Select * 
From OpenQuery(SERVER01,
               'Update SERVER01.MyDatbase.dbo.MyTable
                set ModifiedDate = GetDate(), SomeOtherValue = ''xyz''
                Where Id = 1')

但是我得到這個錯誤:

鏈接服務器“ SERVER01”的OLE DB提供程序“ SQLNCLI11”指示該對象沒有列,或者當前用戶對該對象沒有權限。

當我運行以下選擇查詢時,我成功返回了我要更新的行:

Select * 
From OpenQuery(SERVER01,
               'Select *
                From SERVER01.MyDatbase.dbo.MyTable
                Where Id = 1')

我知道正在運行查詢的用戶具有權限,但是我真的不知道從這里去哪里。 我在某個地方讀到此錯誤與更新查詢不返回行有關。 有沒有道理呢?

我該如何解決?

謝謝

好吧,我找到了答案。 這可以成功工作:

execute (@SQL) at SERVER01

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM