2014-06-24 4 views
0

가져 오기 및 내보내기 마법사 외에 SQL Server 2008의 서버에서 다른 서버로 테이블을 전송하는 쿼리가 있습니까?서버에서 다른 서버로 테이블을 전송

SELECT * INTO [Server1].[db_name].[dbo].[table_name] 
FROM [Server2].[db_name].[dbo].[table_name] 
+0

연결된 서버와 4 부분 이름처럼 server2.schema.table_name에서 server1.schema.table_name 에 *

선택 서버 2 및 쓰기 쿼리 서버 1에 연결된 서버를 만듭니다. 내 경험에 따르면 서버로 실행하는 것이 더 효율적입니다. – Paparazzi

답변

1

몇 가지 옵션이 있습니다. 올바른 권한이있는 경우, 당신은 여기 지침에 따라 연결된 서버를 만들 수 있습니다 (

SELECT * INTO new_db.new_schema.new_table 
FROM OPENQUERY(linked_server_name, 'select * from old_db.old_schema.old_table'); 

또는 당신은 OPENROWSET과 비슷한 작업을 수행 할 수 있습니다 http://msdn.microsoft.com/en-us/library/ff772782.aspx

을하고 OPENQUERY를 사용 (http://msdn.microsoft.com/en-us/library/ms188427.aspx) 레코드를 선택합니다 http://technet.microsoft.com/en-us/library/ms190312.aspx) 연결된 서버 설정을 통해 이동하지 않으려면 :

SELECT * INTO new_db.new_schema.new_table 
FROM OPENROWSET('SQLNCLI', 'Server=OldServer;Trusted_Connection=yes;', 
    'select * from old_db.old_schema.old_table'); 

모두 당신이 사용자 이름을 사용하고있는 인증 방법에 따라 일부 조정이 필요할 수 있습니다를, privile ges, 그리고 그 모든 것.

0

당신은 서버 1에 로그인하고, 서버 2에 연결된 서버 설정을 할 수 있습니다 가정하면, 또 다른 옵션은 OPENQUERY입니다.

SELECT * 
INTO [db_name].[dbo].[table_name] 
FROM OPENQUERY([Server2], 'select * from [db_name].[dbo].[table_name]') 

인덱스/통계는 복사되지 않습니다. 그것들은 대본을 쓰고 다시 만들어야합니다.

동기화가 필요하면 SQL 복제를 살펴볼 것입니다.

+0

테이블에 IDENTITY 컬럼이있는 경우 SET IDENTITY_INSERT table_name ON ... (삽입)을 추가하여 해당 값을 보존 할 수도 있습니다 ... SET IDENTITY_INSERT table_name OFF –

+1

SELECT ... INTO ... '하지만, 테이블이 존재하고'INSERT INTO ...'를 원한다면 그렇게 할 것입니다. – JiggsJedi

0

당신은 서버 1에서 쿼리를 실행, 서버 1 내부 서버 2에 연결된 서버를 정의 할 수 있습니다 :

SELECT * INTO [db_name].[dbo].[table_name] 
FROM [Server2].[db_name].[dbo].[table_name] 

더 연결된 서버에 대해 : http://msdn.microsoft.com/en-us/library/ms188279.aspx

0

server1과 server2가 둘 다 sql 서버라고 가정하면 openquery가 필요하지 않습니다. 당신이 그것을 보여

관련 문제