[英]Update a table on a Linked Server using OPENQUERY
我有兩個服務器: SQLSERVER01
和SQLSERVER02
,我正在嘗試從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.