나는 거의 동일한 데이터 세트를 사용하여 2개의 MSSQL 서버를 실행하고 있습니다. 실제로 생산/개발 설정입니다.
이제 내 작업 흐름은 다음과 같습니다. 프로덕션 서버의 각 데이터베이스에 대해 매일 백업이 이루어집니다. 백업을 인터넷(수십 기가바이트)을 통해 개발 서버로 전송합니다. 현재 데이터 세트를 갖도록 프로덕션 서버의 백업을 사용하여 개발 서버의 데이터베이스를 "복원"합니다.
내 질문은 이것입니다:
MSSQL 서버 데이터베이스에서 단일 테이블을 "내보내고" 다른 MSSQL 서버의 데이터베이스로 가져오는 쉽고 빠른 방법이 있습니까?
나는 배심원이 조작한 POS 트릭보다는 "모범 사례" 유형의 운영에 더 관심이 있습니다.
업데이트
인터넷 검색을 한 후에 테이블을 내보내고 실행 시 가져오는 스크립트를 생성하는 MSSQL Server의 기능을 발견했습니다. 다른 서버에서 테이블을 가져와야 하기 때문에 이 기능을 사용할 수 없습니다.
답변1
대상 서버에서 SQL별로 직접 데이터를 가져올 수도 있습니다. 네트워크에 액세스할 수 있는 경우:
SELECT a.*
INTO <YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
하지만 인덱스는 직접 만들어야 합니다.
또는 INSERT를 사용하는 경우:
INSERT INTO
<YOUR TARGET TABLE>
FROM OPENROWSET('SQLNCLI', 'Server=<IP/SERVERNAME>;Trusted_Connection=yes;',
'SELECT *
FROM <YOUR TABLE>
') AS a;
답변2
내보내기 부분에 대해서는 DBA가 답변했습니다.
https://dba.stackexchange.com/questions/25755/take-a-backup-of-a-single-table-in-the-sql-server
SQL 서버에서 하나의 단일 테이블을 내보내는 방법은 Stackoverflow에서도 여러 번 답변되었습니다.
https://stackoverflow.com/questions/680552/table-level-backup
Google은 또 다른 다양한 방법을 제공합니다.
단일 테이블을 내보낸 후에는 어떤 방법(예: rsync, SFTP, scp)으로 전송한 다음 가져옵니다.