2011-11-17 2 views
2

SQL Server간에 데이터를 복사하기위한 웹 응용 프로그램을 개발 중입니다. 이 도구를 사용하면 복사 할 서버를 지정할 수 있으며 원본 서버에서 대상 서버로 항상 동일한 이름의 특정 데이터베이스를 복사합니다.SQL 서버간에 데이터베이스 복사

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 데이터가 상당히 클 수 있으므로 속도도 고려해야합니다. 이것


내 시도는 내가 SQL Server Management Studio를 사용하여 만든 SSIS 패키지를 실행하려고하는 것입니다. 패키지는 로컬에 저장됩니다.

계획은 원본 및 대상 연결 문자열을 수정하고 패키지를 시작하는 것입니다.

이는 그렇게 내 코드입니다 : 내가 여기에서 어떤 아이디어가 갈 곳 정말 모르겠어요

A first chance exception of type 'System.Runtime.InteropServices.COMException' occurred in Microsoft.SqlServer.ManagedDTS.dll 
A first chance exception of type 'Microsoft.SqlServer.Dts.Runtime.DtsComponentException' occurred in Microsoft.SqlServer.ManagedDTS.dll 

: pkg가 나는 다음과 같은 예외를 얻을 실행

public void DataTransfer(String sourceConnection, String destConnection, String pkgLocation) 
{ 
     Package pkg; 
     Application app; 
     DTSExecResult pkgResults; 

     try 
     { 
      app = new Application(); 
      pkg = app.LoadPackage(pkgLocation, null); 

      foreach (ConnectionManager connectionManager in pkg.Connections) 
      { 
       SqlConnectionStringBuilder builder; 
       switch (connectionManager.Name) 
       { 
        case "SourceConnection": 
         builder = new SqlConnectionStringBuilder(sourceConnection); 
         builder.Remove("Initial Catalog"); 
         builder.Add("Initial Catalog", "StagingArea"); 
         var sourceCon = builder.ConnectionString + ";Provider=SQLNCLI;Auto Translate=false;"; 
         //Added spaces to retain password!!! 
         sourceCon = sourceCon.Replace(";", "; "); 
         connectionManager.ConnectionString = sourceCon; 
         Debug.WriteLine(connectionManager.ConnectionString.ToString()); 
         break; 
        case "DestinationConnection": 
         builder = new SqlConnectionStringBuilder(destConnection); 
         builder.Remove("Initial Catalog"); 
         builder.Add("Initial Catalog", "StagingArea"); 
         var destCon = builder.ConnectionString + ";Provider=SQLNCLI;Auto Translate=false;"; 
         //Added spaces to retain password!!! 
         destCon = destCon.Replace(";", "; "); 
         connectionManager.ConnectionString = destCon; 
         Debug.WriteLine(connectionManager.ConnectionString.ToString()); 
         break; 
       } 
      } 
      pkgResults = pkg.Execute(); 
     } 
     catch (Exception e) 
     { 

      throw; 
     } 

     Debug.WriteLine(pkgResults.ToString()); 
} 

?

+3

지금까지 해보신 것은 무엇입니까? 어떤 문제가 발생 했습니까? SSIS와 같은 기존 옵션을 고려해 보셨습니까? –

+0

http://www.sqlservercentral.com/articles/Database+Mirroring/66357/ –

+0

가능하면 SSIS를 사용하고 싶습니다. 서버에 Integration Services가 설치되어 있어야합니다. 지금까지 SSIS와 bcp 유틸리티를 살펴 보았습니다 ... –

답변

1

데이터 복사/변환을 수행하기 위해 SSIS 패키지를 작성하면 웹 사이트에서 연결 문자열을 구성하고 패키지를 시작하기 만하면됩니다.

+0

하나의 SSIS 패키지에서 작동합니까? 연결 문자열을 변경하기 만하면됩니다. 아니면 패키지 자체를 수정해야합니까? –

+0

네, 이것을 위해 하나의 패키지를 작성할 수 있습니다. 웹 응용 프로그램은 단순히 외부에서 연결 문자열을 구성 할 수 있습니다. 따라서 패키지가 db 또는 파일에서 연결을 읽도록하고 웹 응용 프로그램이 구성 소스에 쓸 수 있습니다. – Sheff

+0

SQL Management Studio에서 만드는 SSIS 패키지에서 동일한 작업을 수행 할 수 있습니까? 내가 마지막으로 수출 한 것을 저장했는데, 이것을 솔루션에 포함하면 연결 문자열을 수정하고 실행할 수 있습니까? –

관련 문제