T-SQL 스크립트를 사용하여 SQL Server 2008에서 특정 테이블의 백업을 수행하는 방법


답변:


11

백업 유형은 SQL Server 복구 모델에 따라 다릅니다. 모든 복구 모델을 사용하면 전체 또는 부분 SQL Server 데이터베이스 또는 데이터베이스의 개별 파일 또는 파일 그룹을 백업 할 수 있습니다. 테이블 레벨 백업을 작성할 수 없습니다. 이러한 옵션은 없습니다. 그러나 이것에 대한 해결 방법이 있습니다

SQL Server에서 가능한 SQL Server 테이블 백업. SQL SQL Server에서 테이블을 백업하는 다양한 대체 방법이 있습니다

  1. BCP (벌크 카피 프로그램)
  2. 데이터로 테이블 스크립트 생성
  3. SELECT INTO를 사용하여 테이블 사본 만들기
  4. 플랫 파일로 직접 테이블 데이터 저장
  5. SSIS를 사용하여 모든 대상으로 데이터 내보내기

여기서 나는 당신이 알고있는 첫 번째 휴식만을 설명하고 있습니다.

방법 1 – BCP (BULK COPY PROGRAM)를 사용하여 SQL 테이블 백업

SQL Server AdventureWorks에있는 "Person.Contact"라는 SQL 테이블을 백업하려면 다음 스크립트를 실행해야합니다.

-- SQL Table Backup
-- Developed by DBATAG, www.DBATAG.com
DECLARE @table VARCHAR(128),
@file VARCHAR(255),
@cmd VARCHAR(512)
SET @table = 'AdventureWorks.Person.Contact' --  Table Name which you want    to backup
SET @file = 'C:\MSSQL\Backup\' + @table + '_' + CONVERT(CHAR(8), GETDATE(), 112) --  Replace C:\MSSQL\Backup\ to destination dir where you want to place table data backup
+ '.dat'
SET @cmd = 'bcp ' + @table + ' out ' + @file + ' -n -T '
EXEC master..xp_cmdshell @cmd

산출

여기에 이미지 설명을 입력하십시오

노트 -

  1. 대량 가져 오기 / 내보내기 권한이 있어야합니다
  2. 위의 스크립트에서 -n은 기본 SQL 데이터 유형을 나타내며, 이는 복원 중 키입니다.
  3. -T는 SQL Server 인증을 사용하여 연결하려는 경우 Windows 인증을 사용하여 SQL Server에 연결하고 있음을 나타냅니다. -U -P
  4. 이것은 또한 데이터 전송 속도를 알려줍니다. 제 경우에는 초당 212468.08 행이었습니다.
  5. 이 명령이 완료되면 "AdventureWorks.Person.Contact_20120222"라는 파일이 지정된 대상 폴더가됩니다.

또는 명령 프롬프트를 통해 BCP를 실행하고 명령 프롬프트에 다음 명령을 입력 할 수 있습니다. 두 작업 모두 동일한 활동을 수행하지만 명령 프롬프트 및 유형을 열 때 저장 유형 인 위에서 언급 한 방법이 마음에 듭니다.

bcp AdventureWorks.Person.Contact out C:\MSSQL\Backup\AdventureWorks.Person.Contact_20120222.dat -n -T

여기에 이미지 설명을 입력하십시오


9

방법 1 :

테이블의 데이터에만 관심이 있고 동일한 데이터베이스 및 서버 내에서 로컬로 사용하려는 경우 아래 쿼리를 사용하여 선택한 테이블의 백업을 수행 할 수 있습니다.

SELECT * INTO newtable1
FROM originalTable1

--- 표 2

SELECT * INTO newtable2
FROM originalTable2

등등 ... n 개의 테이블 수

이 명령문은 newtable1, newtable1이라는 테이블을 작성합니다. 따라서 이전에 작성할 필요가 없습니다.

참고 *이 방법은 백업을 매우 빠르게 수행하지만 주요 단점은 테이블의 키, 인덱스 및 제약 조건을 수행하지 않으며 백업은 파일 외부가 아닌 데이터베이스 내에 저장된다는 것입니다

방법 2 :

재해 복구 솔루션 또는 데이터 손실 방지를 위해 다른 서버로 테이블을 백업하려는 경우 작업의 스크립트 생성 옵션을 사용하여 테이블을 스크립팅 할 수 있습니다.

  1. 먼저 백업하려는 테이블이 포함 된 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 작업-> 스크립트 생성을 선택하십시오.

  2. 테이블을 백업해야하는 목록에서 데이터베이스를 선택하십시오.

  3. 다음에 나타나는 화면은 스크립트 옵션입니다.

  4. 테이블 /보기 옵션이 표시 될 때까지 스크립트 옵션을 아래로 스크롤하십시오. 제약 조건, 스크립트 데이터, 외래 키, 기본 키, 트리거 및 고유 키를 확인하십시오. (또는 물론 필요한 것을 선택할 수 있습니다). 다음을 선택하면 객체 유형 선택 화면이 나타납니다.

  5. 테이블을 선택하고 다음을 누르십시오. 마지막으로 백업하려는 테이블을 선택하고 다음에 누르십시오.

방법 3 :

테이블 백업에도 bcp 유틸리티 를 사용할 수 있습니다 .


1

특정 테이블을 .bak파일로 백업 할 수 없으며 csv로 내보내거나 스크립트로 내보내거나 bcp파일에 넣는 데 사용할 수 있습니다.

특정 테이블을 백업하려는 경우 (그리고 항상 같은 경우) 수행 할 수있는 작업은 테이블을 별도의 file group파일 그룹 으로 이동 하고 백업하는 것입니다.

설명서는 파일 및 파일 그룹 백업을 참조하십시오 .

예를 들어 T-SQL을 사용하여 특정 파일 또는 파일 그룹을 백업하려는 경우 (링크에서)

--Back up the files in SalesGroup1.
BACKUP DATABASE Sales
   FILEGROUP = 'SalesGroup1',
   FILEGROUP = 'SalesGroup2'
   TO DISK = 'C:\MySQLServer\Backups\Sales\SalesFiles.bck';
GO

--Backup the files in the SalesGroup1 secondary filegroup.
BACKUP DATABASE Sales
   FILE = 'SGrp1Fi2', 
   FILE = 'SGrp2Fi2' 
   TO DISK = 'G:\SQL Server Backups\Sales\SalesGroup1.bck';
GO

1
불행히도 모든 읽기 / 쓰기 파일 그룹을 함께 백업해야하므로 하나만 선택할 수는 없습니다.
Kamil Gosciminski

1

KASQLDBA의 응답에서 방법 1을 기반으로 :

백업 된 테이블 사본을 보유 할 별도의 데이터베이스를 작성하십시오. 원래 테이블에서 선택하고 대체 데이터베이스에 복사 할 수 있도록 KASQLDBA 제공 쿼리를 수정하십시오.

SELECT * INTO MyNewDatabase.dbo.newtable1
FROM OriginalDatabase.dbo.originalTable1

--- For table 2
SELECT * INTO MyNewDatabase.dbo.newtable2
FROM OriginalDatabase.dbo.originalTable2

새 데이터베이스에서 테이블을 삭제하는 스크립트를 작성한 다음 모든 필수 테이블에 대해 select into 명령을 실행할 수 있습니다. 인덱스 및 기타 개체를 사용할 수있게하려면 새 데이터베이스에서 해당 인덱스를 만들고 테이블을 다시 채우기 전에 잘라낼 수 있습니다. 잘림을 선호하는 경우 select into 대신 insert 문을 사용해야합니다.

이 옵션은 .BAK 파일을 만드는 방법을 제공합니다. 새 데이터베이스에서 테이블을 채운 후에는 단순히 데이터베이스 백업 명령을 실행하면됩니다.


1

SSMS의 대량 내보내기 기능을 사용하면 여기 에 언급 된 가장 쉽고 쉬운 방법이 있습니다

SQL Server 가져 오기 및 내보내기 마법사 : SQL Server 가져 오기 및 내보내기 마법사는 SQL Server Integration Services (SSIS) 패키지에 그래픽 사용자 인터페이스를 제공합니다. 패키지를 만든 후에는 일정대로 실행되도록 자동화 할 수 있습니다. SSDT (SQL Server Data Tools)를 사용하여 추가로 구성 및 수정할 수 있습니다.

시작하려면 가져 오기 및 내보내기 마법사를 열고 데이터베이스를 마우스 오른쪽 단추로 클릭 한 후 태스크 하위 메뉴-> 데이터 내보내기 명령을 선택하십시오.

여기에 이미지 설명을 입력하십시오


이 링크가 질문에 대한 답변을 제공 할 수 있지만 여기에 답변의 필수 부분을 포함시키고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 유효하지 않을 수 있습니다. - 검토에서
kevinsky

트윗 담아 가기 그러나 적어도 당신은 그것을 투표해야합니다!
Sayyed Dawood

-1

또 다른 방법은 script / sproc을 사용하는 것입니다 : DumpDataFromTable.sql from : https://github.com/Zindur/MSSQL-DumpTable/tree/master/Scripts

 EXECUTE [dbo].[DumpDataFromTable] @SchemaName = 'dbo', @TableName = 'Table', @PathOut = 'c:\temp\Scripts'

스키마 이름과 테이블 이름을 전달한 다음 작성된 스크립트가 저장 될 출력 경로를 전달해야합니다 (폴더는 이미 작성 / 존재해야하며 sql에는 sproc의 주석 참조 권한이 있음).

그리고 원하는 경우 테이블에 조건을 추가 할 수 있습니다 (필터는 AND로 시작해야합니다)


이 절차를 누락 절차 PRC_WritereadFile에 따라 달라집니다
SubqueryCrunch

-2

SQL Server 2008 데이터베이스의 데이터를 사용하여 단일 테이블을 백업하십시오.

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