링크드서버 에서의 nolock 힌트
공급자에 따라 동작이 틀리다.
1. 공급자에 따라 with (nolock) 힌트가 먹는 경우도 있고 아닌 경우도 있다.
예를들어 Microsoft OLE DB Provider for SQL Server 의 경우,
with (nolock) 이 전달되어 정상적으로 동작 합니다.
또한 Transaction isolation level read uncommitted 도 동작 합니다.
-- server,ip 로 적던지 sqlservermanager10 에서 별칭으로 등록한 이름을 적도록 한다.
32, 64비트 모든 클라이언트가 정상 동작하기 위해서는 별칭을 모두 등록 하도록 한다.
ex1)
EXEC master.dbo.sp_addlinkedserver @server = N'yourip,port', @srvproduct=N'SQL Server'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'yourip,port',@useself=N'False',@locallogin=NULL,@rmtuser=N'id',@rmtpassword='pass'
2. 그러나 Microsoft OLEDB Provider for ODBC Driver 의 경우,
with (nolock) 이 전달되지 않습니다.
역시 Tran........uncommitted 도 동작하지 않습니다.
이 경우 work-around 로 linked server 대상 서버에 view 를 만들고 view 에 nolock 힌트를 명시하면 가능 합니다.
ex2)
EXEC master.dbo.sp_addlinkedserver @server = N'test2', @srvproduct=N' ', @provider=N'MSDASQL', @provstr=N'Driver={SQL Server};Database=master;Server=yourip,port;UID=id;PWD=pass;'
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'test2',@useself=N'True',@locallogin=NULL,@rmtuser=NULL,@rmtpassword=NULL