2005/01/04

분산쿼리를 위한 Linked Server 설정

분산 쿼리를 사용하면 여러 SQL Server 인스턴스에 저장된 분산 데이터 및 관계형 및 비관계형 데이터 원본에 저장되어 OLE DB 공급자를 통해 액세스되는 유형이 다른 데이터 까지 데이터 원본에 대해 분산 쿼리, 업데이트, 명령, 트랜잭션 등을 수행할 수 있습니다.




그림과 같이 매우 다양한 데이터를 원본으로 이용이 가능합니다.

데이터 원본에 접근하는 방법은 일반적인 웹프로그래밍이나, DB연동프로그램과 같으나, 그사이에 SQL Server가 끼어 있다는 것 외에는 모두 동일합니다.

EM을 통한 Linked Server 설정방법입니다.

1. 연결된 서버는 호스트네임이나, IP Address를 입력하고, 서버유형에는 같은 SQL Server 일경우에는 SQL Server를 선택합니다. 나머지 항목은 자동으로 알아서 해줍니다.



쿼리분석문은 다음과 같다.

EXEC sp_addlinkedserver [@server = ] '연결된 서버의 이름'
     [, @srvproduct = ] '연결된 서버의 제품 이름']
     [, @provider = ] 'OLE DB 공급자의 이름'
     [, @datasrc = ] '데이터 원본 경로'
     [, @location = ] '위치'
     [, @provstr = ] '공급자 문자열'
     [, [@catalog = ] '카탈로그 속성' ]


예제,

exec sp_addlinkedserver @server = 'bb',
 @srvproduct = 'ccc' ,
 @provider = 'SQLOLEDB' , 
 @datasrc = '10.0.0.176'


같은 SQL Server에 연결할경우는

EXEC sp_addlinkedserver '10.0.0.176', N'SQL Server'


다른방법은 [관리도구]-[데이터원본ODBC] 에서 ODBC 연결설정을 한후, EM에서 원격서버 추가에서

연결된서버 이름에 원하는 연결이름과,
공급자에서 ODBC를 선택,
데이터원본에 ODBC관리자에서 등록했던 ODBC명만 넣어주면 된다.



2. 원격서버에 연결할 계정정보를 설정하는 탭입니다.



Linked Server 가 만들어진후에는 그서버에 접속하는 계정정보를 매핑해줘야 한다.

로컬로그인 계정과, 원격서버의 계정을 매핑해주거나, 가장하여 접근을 하거나, 특정 보안컨텍스트를 통해서 연결이 가능하다.

쿼리를 통한 로그인 설정은

sp_helpserver 를 통해서 연결가능한 서버 목록을 확인한후,

EXEC sp_addlinkedsrvlogin '10.0.0.176', false, NULL, 'kissme7', '1234'

3. 데이터 연결 서버 옵션설정




원격서버에 있는 저장프로시져를 호출할경우 RPC를 활성화시킨다.

EXEC sp_serveroption '10.0.0.176', 'rpc, TRUE

EXEC sp_serveroption '10.0.0.176', 'rpc out, TRUE


연결이 완료된후, 다음과 같은 쿼리가 가능하다. 원격서버의 객체인경우 원격서버명을 앞에다만 붙여주면 된다.

select * from [10.0.0.176].Northwind.dbo.Customers mnw
join Northwind.dbo.Orders nw
on mnw.CustomerID = nw.CustomerID
where mnw.CustomerID like 'AN%'


04-mssql2k_linkedserver_0.gif
04-mssql2k_linkedserver_1.gif
04-mssql2k_linkedserver_2.gif
04-mssql2k_linkedserver_3.gif

댓글 없음:

댓글 쓰기

가장 많이 본 글