테이블 수준 백업


답변:


89

BACKUP DATABASE물론 문제의 테이블이 자체적으로 할당되지 않는 한이 명령을 사용하여 단일 테이블을 백업 할 수 없습니다 FILEGROUP.

제안한대로 할 수있는 작업은 테이블 데이터를 CSV 파일로 내보내는 것입니다. 이제 테이블의 정의를 얻기 위해 스크립트를 ' CREATE TABLE스크립트로 작성 '할 수 있습니다 .

SQL Server Management Studio 내에서 다음을 수행하여이 작업을 수행 할 수 있습니다.

데이터베이스> 작업> 스크립트 생성을 마우스 오른쪽 버튼으로 클릭

그런 다음 스크립팅 할 테이블을 선택하고 제약 조건 및 인덱스와 같은 관련 개체를 포함하도록 선택할 수도 있습니다.

를 얻기 위해 DATA단지와 함께 schema, 당신은 선택할 수있어 Advanced설정 스크립팅 옵션 탭에서, 그리고에서 GENERAL섹션 설정 Types of data to script선택을Schema and Data

도움이되기를 바라지 만 추가 지원이 필요한 경우 저에게 직접 연락 주시기 바랍니다.


'데이터베이스 게시 마법사'는 내가 설명한 단계를 자동화합니다.
John Sansom

25
John, 스키마와 함께 데이터를 얻으려면 Advanced스크립팅 옵션 설정 탭에서 Types of data to script선택해야 하며 일반 섹션에서 선택 Schema and Data. 내가 처음했을 때는 분명하지 않았다.
Alex C

Alex의 팁은 매우 중요합니다. 또한 SQL Server의 메뉴를 사용하는 대신 스크립트를 작성하는 방법이 있습니까?
sooprise 2012

1
PowerShell과 SMO의 조합을 사용하여이를 달성 할 수 있어야합니다. 가이드로 필 팩터에서이 문서를 참조하십시오 : simple-talk.com/sql/database-administration/...
존 Sansom

@AlexC 감사합니다! 나에게 두통
Simon Whitehead

55

대량 복사 유틸리티 를 사용하여 테이블 수준 백업을 수행하고 있습니다.

내보내기 :

bcp.exe "select * from [MyDatabase].dbo.Customer " queryout "Customer.bcp" -N -S localhost -T -E

가져 오기 :

bcp.exe [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

보시다시피 모든 쿼리를 기반으로 내보낼 수 있으므로이를 통해 증분 백업을 수행 할 수도 있습니다. 또한 SSMS를 사용하는 여기에 언급 된 다른 방법과 달리 스크립트가 가능합니다.


1
그냥주의하세요. 선택 쿼리 대신 이름을 사용하여 테이블을 복사하려면 QUERYOUT 대신 OUT을 사용하도록 스크립트를 변경하십시오.
Valamas

45

필요한 단계는 다음과 같습니다. 데이터를 원한다면 Step5가 중요합니다. 2 단계에서는 개별 테이블을 선택할 수 있습니다.

EDIT 스택의 버전이 읽기 어렵습니다 ... 여기에 전체 크기 이미지가 있습니다. http://i.imgur.com/y6ZCL.jpg

John Sansom의 답변 단계는 다음과 같습니다.


@Alex C를 사용하는 SSMS는 무엇입니까? 내 SSMS2005에서 내 마법사는 당신의 마법사와 다릅니다.
KirdApe 2015-08-20

미안 해요, 제가 대답 한 지 몇 년이 지났습니다. 아마도 2008 년을 사용하고있을 것 같습니다. 방금 마법사를 확인했고 더 이상 고급을 클릭 할 필요가 없지만 대신 프레임 5 (위)의 전체 목록이 마법사 페이지 중 하나로 나타납니다. 또한 STRUCTURE 및 DATA 옵션은 각각 개별적으로 TRUE / FALSE 옵션으로 분할되었습니다. 도와 드릴 일이 더 있으면 알려주세요.
Alex C

19

아래 쿼리를 실행하여 데이터와 함께 기존 테이블의 기존 구조로 새 테이블을 만드는 기존 테이블의 백업을 수행 할 수 있습니다.

select * into newtablename from oldtablename

테이블 구조 만 복사하려면 아래 쿼리를 사용하십시오.

select * into newtablename from oldtablename where 1 = 2

7

이것은 qntmfred의 솔루션 과 유사 하지만 직접 테이블 덤프를 사용합니다. 이 옵션은 약간 더 빠릅니다 ( BCP 문서 참조 ).

내보내기 :

bcp "[MyDatabase].dbo.Customer " out "Customer.bcp" -N -S localhost -T -E

가져 오기 :

bcp [MyDatabase].dbo.Customer in "Customer.bcp" -N -S localhost -T -E -b 10000

1
여기에 제약이 포함됩니까?
user3071284

4

MySQL과 같은 것을 찾고 있다면 DUMP좋은 소식이 있습니다. SQL Server 2008 Management Studio가 그 기능을 추가했습니다.

SSMS에서 해당 DB를 마우스 오른쪽 버튼으로 클릭하고 작업> 스크립트 생성을 선택 합니다. 그런 다음 옵션 마법사의 두 번째 페이지에서 스크립팅 된 데이터도 선택해야DUMP 합니다. 그러면 파일 크기가 생성됩니다 .



2

Microsoft 의 무료 데이터베이스 게시 마법사 를 사용하여 SQL 스크립트 (CREATE TABLE 및 INSERT INTO)로 텍스트 파일을 생성 할 수 있습니다 .

단일 테이블에 대해 이러한 파일을 생성 할 수 있으며 SQL 스크립트를 실행하여 데이터를 포함한 전체 테이블을 "복원"할 수 있습니다.


+1 SQL 스크립트에 익숙한 모든 사람들에게 이것이 당신이 찾고있는 옵션입니다. 개별 테이블을 선택하려면 "선택한 데이터베이스의 모든 개체 스크립팅"을 선택 취소합니다. 스크린 샷 : products.secureserver.net/products/hosting/…
lepe

2

여기에 설명 된 문제와 일치하는지 모르겠습니다. 테이블의 증분 백업을해야했습니다! (새로 삽입 된 데이터 만 복사해야합니다). 저는 DTS 패키지를 디자인했습니다.

  1. ( '상태'열을 기준으로) 새 레코드를 가져 와서 데이터를 목적지로 전송했습니다. ( '데이터 변환 작업'을 통해)

  2. 그런 다음 '상태'열을 업데이트했습니다. ( 'SQL 실행 태스크'를 통해)

'워크 플로'를 제대로 수정해야했습니다.


2

SQL Server 가져 오기 및 내보내기 마법사를 사용합니다.

  1. ssms
  2. 데이터베이스 엔진 열기
  3. Alt. 내보낼 테이블이 포함 된 데이터베이스를 클릭합니다.
  4. "작업"을 선택합니다.
  5. "데이터 내보내기 ..."를 선택합니다.
  6. 마법사 따르기

1

모든 복구 모델을 사용하면 전체 또는 부분 SQL Server 데이터베이스 또는 데이터베이스의 개별 파일 또는 파일 그룹을 백업 할 수 있습니다. 테이블 수준 백업을 만들 수 없습니다 .

출처 : 백업 개요 (SQL Server)


0

SQL Server는 테이블 백업을 지원하지 않으므로 두 가지 옵션이 있습니다. 둘 다 테이블 생성 스크립팅으로 시작됩니다. 그런 다음 스크립트 테이블-INSERT 옵션을 사용하여 많은 삽입 문을 생성하거나 통합 서비스 (DTS 2000)를 사용하거나 유사한 데이터를 CSV 또는 유사한 형식으로 내보낼 수 있습니다.



0

누군가 실수로 행을 삭제 한 후에 테이블을 복원 할 수있는 방법을 찾고 있다면 데이터베이스 스냅 샷을 살펴볼 수 있습니다. 스냅 샷에서 테이블 (또는 행의 하위 집합)을 매우 쉽게 복원 할 수 있습니다. http://msdn.microsoft.com/en-us/library/ms175158.aspx 참조



0

Handy Backup은 MSSQL 2005/2008을 포함하여 MS SQL Server에서 덤프 파일을 자동으로 만듭니다. 이러한 덤프는 특정 데이터베이스 콘텐츠의 정확한 복사본을 포함하는 테이블 수준 이진 파일입니다.

Handy Backup으로 간단한 덤프를 만들려면 다음 지침을 따르십시오.

  1. Handy Backup을 설치하고 새 백업 작업을 만듭니다.
  2. 2 단계에서 "MSSQL"을 데이터 소스로 선택합니다. 새 창에서 백업 할 데이터베이스를 선택하십시오.
  3. 백업을 저장할 여러 대상 중에서 선택하십시오.
  4. 4 단계에서 "전체"백업 옵션을 선택합니다. 필요한 경우 타임 스탬프를 설정합니다.
  5. 결과 덤프 파일을 압축하거나 암호화 할 필요가 없으면 5 단계를 건너 뜁니다.
  6. 6 단계에서 정기적으로 덤프를 생성하도록 작업 일정을 설정합니다 (그렇지 않으면 작업을 수동으로 실행).
  7. 다시 7 단계를 건너 뛰고 8 단계에서 작업 이름을 지정하십시오. 작업을 완료했습니다!

이제 이름 앞의 아이콘을 클릭하여 새 작업을 실행하거나 예약 된 시간을 기다립니다. Handy Backup은 데이터베이스에 대한 덤프를 자동으로 생성합니다. 그런 다음 백업 대상을 엽니 다. MS SQL 백업이있는 폴더 (또는 몇 개의 폴더)를 찾을 수 있습니다. 이러한 폴더에는 하나의 ZIP으로 압축 된 일부 이진 테이블과 설정으로 구성된 테이블 수준 덤프 파일이 포함됩니다.

기타 데이터베이스

Handy Backup은 MySQL, MariaDB, PostgreSQL, Oracle, IBM DB2, Lotus Notes 및 ODBC 드라이버가있는 모든 일반 SQL 데이터베이스에 대한 덤프를 저장할 수 있습니다. 이러한 데이터베이스 중 일부는 DBMS와 Handy Backup 간의 연결을 설정하기위한 추가 단계가 필요합니다.

위에서 설명한 도구는 종종 SQL 데이터베이스를 테이블 수준의 SQL 명령 시퀀스로 덤프하여 필요한 수동 수정을 위해 이러한 파일을 준비합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.