2016-06-06 3 views
0

전 C#을 사용하여 프로그래밍 방식으로 SQL Server 데이터베이스 백업을 만들어야합니다. 이 데이터베이스 백업에는 전체 데이터베이스 구성이 포함되어야합니다.

그러나 주요 요구 사항은 백업에, 테이블 데이터가 기록 ID에 특정한와 관련되어 있어야한다는 것입니다. 예를 들어

, EmployeeID는 테이블 중 하나의 PK이다. 같은 EmployeeID이 다른 테이블에서 FK로 사용됩니다. 그래서, 특정 파일에만 EmployeeID에 대한 데이터를 보유 할 테이블을 사용하여 프로그래밍 방식으로 백업 파일을 만들어야합니다.

아무도 도와 드릴 수 있습니까?

+2

왜 백업이 필요하지만 데이터를 필터링하고 하나의 EmployeeID 만 저장해야합니까? –

+1

SQL Server는 모든 데이터를 제외한 모든 데이터를 백업 할 수 없습니다. 일부 데이터를 삭제해야하는 경우 먼저 삭제해야합니다. 복원 된 데이터베이스에서 데이터를 백업, 복원 및 폐기 한 다음 결과를 백업하십시오. –

+1

요구 사항이 서로 상충되는 것 같습니다. 데이터베이스 백업은 전체 데이터베이스의 백업입니다. 그렇지 않은 경우 데이터베이스 백업이 아닙니다. 아마도 특정 데이터를 캡처하려고하는 것일 수도 있습니다. 여기서 실제로하려고하는 것을 확장 할 수 있다면 우리는 도울 수있을 것입니다. –

답변

0

SQL Server에는 가질 수있는 모든 요구 사항에 대한 솔루션이 있습니다. 문제의 해결책은 다음과 같습니다.

  1. 동일한 SQL Server 인스턴스에서 원본 데이터베이스의 복제본을 만들 SQL 스크립트를 작성하십시오.

  2. 이 복제 데이터베이스는 당신이 필요로 데이터 (샘플 코드는 아래에 제공) 직원 ID X를 특정 할 수있는 데이터 및 필드를 포함해야합니다. 이 SELECT 문 자체가 소스 테이블을 기반으로 당신을 위해 테이블 ​​스키마을 만들 하고 또한 INSERT 특정 기록은 필터를 기반으로 대상 테이블에 당신은 조건에 적용됩니다. 이 SQL 스크립트의

  3. 출력은 ".BAK"파일

  4. 복제 된 데이터베이스의 백업이 생성되면, 스크립트가 즉시 복제 데이터베이스를 삭제해야합니다에게해야한다.

  5. 당신은 SQL 스크립트 동안 배포

A의 다음 값을 구성해야합니다. 소스 데이터베이스 - 백업이 갖고있는 데이터베이스는

B를 생성한다. 직원 ID - 데이터를 내보낼 필요가있는 회사의 ID입니다. 이것의 기본값은 X.

다 할 수 있습니다. 백업 파일 경로 - 데이터베이스 백업이 상주 할 수있는 서버의 경로입니다.

USE master 
    IF EXISTS(select * from sys.databases where name='Test') 
    DROP DATABASE Test 

    CREATE DATABASE Test 


    IF EXISTS(select * from sys.databases where name='Test') 
    BEGIN 

     USE Test 

     SELECT * 
     INTO [Destination_Table1] 
     FROM [SourceDatabase].[dbo].[Source_Table1] 
     WHERE [SourceDatabase].[dbo].[Source_Table1].[EmployeeID] = 78 

     BACKUP DATABASE Test 
     TO DISK = 'D:\SSIS\DB\Test.Bak' 
     WITH FORMAT, 
     MEDIANAME = 'Z_SQLServerBackups', 
     NAME = 'Test'; 

     IF EXISTS(select * from sys.databases where name='Test') 
     DROP DATABASE Test 

    END 

추가 도움이 필요하면 알려주세요.