SQL 은 서로 다른 서버 및 로 컬 데이터 조작 을 실현 합 니 다.

3643 단어
서로 다른 서버 데이터베이스 간 의 데이터 조작
1. -- 링크 서버 만 들 기
exec sp_addlinkedserver   'ITSV', ' ', 'SQLOLEDB', '       ip   ' 
exec sp_addlinkedsrvlogin  'ITSV', 'false ',null, '   ', '  ' 

2. 두 서버 의 MSDTC 서 비 스 를 시작 합 니 다.
MSDTC 서 비 스 는 분산 형 트 랜 잭 션 서 비 스 를 제공 합 니 다. 데이터베이스 에서 분산 형 트 랜 잭 션 을 사용 하려 면 참여 하 는 쌍방 서버 에서 MSDTC (Distributed Transaction Coordinator) 서 비 스 를 시작 해 야 합 니 다.
3. 쌍방의 135 포트 열기
MSDTC 서 비 스 는 RPC (Remote Procedure Call (RPC) 서비스 에 의존 하 며, RPC 는 135 포트 를 사용 해 RPC 서비스 가 시 작 될 수 있 도록 하고, 서버 에 방화벽 이 있 으 면 135 포트 가 방화벽 에 막 히 지 않도록 한다."telnet IP 135" 명령 을 사용 하여 상대방 포트 가 대외 적 으로 개방 되 었 는 지 테스트 합 니 다.포트 스 캔 소프트웨어 (예 를 들 어 Advanced Port Scanner) 스 캔 포트 를 사용 하여 포트 가 열 렸 는 지 여 부 를 판단 할 수 있 습 니 다.
4. 트리거 를 만 들 려 면
create   trigger   t_test   on   test   
for   insert,update,delete   
as 
--      ,                    
set    xact_abort   on  
begin  distributed   tran 
    delete   from   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    where   id   in(select   id   from   deleted)   
    insert   into   openrowset('sqloledb','xz';'sa';'',test.dbo.test)   
    select   *   from   inserted   
commit tran
 
--     
select * from ITSV.    .dbo.   
 
--     
select * into   from ITSV.    .dbo.   
 
--               
exec sp_dropserver  'ITSV ', 'droplogins ' 
/*               */

구체 적 과정
-- 링크 서버 만 들 기
exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '       ip   ' 
exec sp_addlinkedsrvlogin  'ITSV ', 'false ',null, '    ', '   ' 

-- 조회 예시
select * from ITSV.    .dbo.   

-- 예시 도입
select * into   from ITSV.    .dbo.   

-- 이후 사용 하지 않 을 때 링크 서버 삭제
exec sp_dropserver  'ITSV ', 'droplogins ' 

원 격 / 랜 데이터 연결 (openrowset / openquery / opendatasource)
1、openrowset
-- 조회 예시
select * from openrowset( 'SQLOLEDB ', 'sql     '; '    '; '   ',    .dbo.  ) 

-- 본 지표 생 성
select * into   from openrowset( 'SQLOLEDB ', 'sql     '; '    '; '   ',    .dbo.  ) 

-- 본 지표 면 을 원 격 표 로 가 져 오기
insert openrowset( 'SQLOLEDB ', 'sql     '; '    '; '   ',    .dbo.  ) 
select *from     

-- 본 지표 업데이트
update b 
set b. A=a. A 
 from openrowset( 'SQLOLEDB ', 'sql     '; '    '; '   ',    .dbo.  )as a inner join     b 
on a.column1=b.column1 

2. openquery 용법 은 연결 을 만들어 야 합 니 다.
-- 우선 연결 을 만들어 링크 서버 를 만든다
exec sp_addlinkedserver   'ITSV ', ' ', 'SQLOLEDB ', '       ip   ' 

-- 조회
select * 
FROM openquery(ITSV,  'SELECT *  FROM    .dbo.   ') 

-- 본 지표 면 을 원 격 표 로 가 져 오기
insert openquery(ITSV,  'SELECT *  FROM    .dbo.   ') 
select * from     

-- 본 지표 업데이트
update b 
set b. B=a. B 
FROM openquery(ITSV,  'SELECT * FROM    .dbo.   ') as a  
inner join     b on a. A=b. A 

3、opendatasource/openrowset
SELECT   * 
FROM   opendatasource( 'SQLOLEDB ',  'Data Source=ip/ServerName;User ID=   ;Password=   ' ).test.dbo.roy_ta 
--         

좋은 웹페이지 즐겨찾기