[SQL]SELECT LINKED SERVER 的 TABLE 使用 (NOLOCK)

今天同事回報一個問題,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:從零開始的軟體開發生活

請大家繼續支持 ^_^