今天同事回報一個問題,SELECT 一個 LINKED SERVER 的 TABLE 資料時,加入 (NOLOCK) ,如下,
SELECT COL1
FROM [MYLINKED_SERVER].[DB_NAME].[schema].[MYTABLENAME] (NOLOCK)
結果會發生 4122 的錯誤
Msg 4122, Level 16, State 1, Line 1
不允許遠端資料表值函式呼叫。
使用同義詞來包也是一樣的問題,如下,
CREATE SYNONYM [schema].[MYTABLENAME]
FOR [MYLINKED_SERVER].[DB_NAME].[schema].[MYTABLENAME]
GO
那要怎麼辦呢?
1.要加上 WITH ,如下,
SELECT COL1
FROM [MYLINKED_SERVER].[DB_NAME].[schema].[MYTABLENAME] WITH (NOLOCK)
2.使用 VIEW 來取代 同義詞,如下,
CREATE VIEW MYTABLEVIEW
AS
SELECT * FROM [MYLINKED_SERVER].[DB_NAME].[schema].[MYTABLENAME]
go
Hi,
亂馬客Blog已移到了 「亂馬客 : Re:從零開始的軟體開發生活」
請大家繼續支持 ^_^