복붙노트

[SQL] 하나의 SQL 서버에서 다른 서버로 내보내기 테이블 데이터

SQL

하나의 SQL 서버에서 다른 서버로 내보내기 테이블 데이터

저는 두 SQL 서버 (모두 2005 버전)을 가지고있다.

나는 하나에서 다른 여러 테이블을 마이그레이션 할.

나는 시도했다 :

그 때 나는 사용하여 시도 :

SELECT * 
INTO [destination server].[destination database].[dbo].[destination table] 
FROM [source server].[source database].[dbo].[source table]

그러나 나는 오류를 얻을 :

누군가가 내 문제에 적합한 솔루션으로 날 지점시겠습니까?

해결법

  1. ==============================

    1.이 시도:

    이 시도:

    이것은 잘 작동합니다.

  2. ==============================

    2.그냥 (위 SQL 서버 2008 등) 또 다른 옵션을 표시합니다 :

    그냥 (위 SQL 서버 2008 등) 또 다른 옵션을 표시합니다 :

  3. ==============================

    3.작업의 스크립트 테이블 옵션이 있습니다 / 스크립트를 생성합니다! 또한 처음에 보내고 말았습니다! 하지만 당신은 거기에 (아주 좋은 기능,하지만 매우 취소 직관적 장소) 스크립트 삽입 생성 할 수 있습니다.

    작업의 스크립트 테이블 옵션이 있습니다 / 스크립트를 생성합니다! 또한 처음에 보내고 말았습니다! 하지만 당신은 거기에 (아주 좋은 기능,하지만 매우 취소 직관적 장소) 스크립트 삽입 생성 할 수 있습니다.

    단계에 도착하면 "설정 스크립팅 옵션", "고급"탭으로 이동합니다.

    여기에 설명 된 단계 (사진은 이해할 수 있지만, 나는 거기를 라트비아어에 쓰기 작업을 수행).

  4. ==============================

    4.SQL Server 가져 오기 및 내보내기 마법사를 사용하십시오 (작업에서 -> 데이터 내보내기).

    SQL Server 가져 오기 및 내보내기 마법사를 사용하십시오 (작업에서 -> 데이터 내보내기).

    그것은 대상 데이터베이스의 테이블을 만들 수 있습니다. 당신이 보았 듯이, 반면, 스크립팅 마법사는 테이블 구조를 만들 수 있습니다.

  5. ==============================

    5.테이블이 이미 스크립트를 사용하여 생성하는 경우, 데이터를 복사 할 수있는 또 다른 방법은 대상 서버에 원본 서버에서 모든 데이터를 복사 BCP 명령을 사용하여이된다

    테이블이 이미 스크립트를 사용하여 생성하는 경우, 데이터를 복사 할 수있는 또 다른 방법은 대상 서버에 원본 서버에서 모든 데이터를 복사 BCP 명령을 사용하여이된다

    원본 서버에서 텍스트 파일로 테이블 데이터를 내보내려면 :

    bcp <database name>.<schema name>.<table name> OUT C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password> 
    

    대상 서버에서 텍스트 파일에서 테이블 데이터를 가져 오려면 :

    bcp <database name>.<schema name>.<table name> IN C:\FILE.TXT -c -t -T -S <server_name[ \instance_name]> -U <username> -P <Password>
    
  6. ==============================

    6.당신이 링크 서버에 권한이없는 경우, 여기에 하나의 서버에서 다른 서버로 사용하여 SQL Server 가져 오기 / 내보내기 마법사에 테이블을 가져올 수있는 단계는 다음과 같습니다

    당신이 링크 서버에 권한이없는 경우, 여기에 하나의 서버에서 다른 서버로 사용하여 SQL Server 가져 오기 / 내보내기 마법사에 테이블을 가져올 수있는 단계는 다음과 같습니다

  7. ==============================

    7.그냥 재미로합니다.

    그냥 재미로합니다.

    내가 연결된 서버를 만들 수 않네 때문에 그냥 프로덕션 서버에 연결하기 때문에 나는 다음과 같은 한 INSERT INTO를 사용하는 것만으로는 충분하지했다 :

    내가 문제를 가지고 있기 때문에 그것의 백도어 솔루션은, 그러나 그것은 나를 위해 일했습니다.

    내가 SCRIPT TABLE AS를 사용하여 빈 테이블을 만든 이후 / I는 SELECT INTO를 사용 couldnt는 모든 키와 인덱스를 전송하기 위해 CREATE. 테이블이 대상 위치에 존재하지 않지만 당신이 수동으로 실시 할 필요가 그래서, 키와 인덱스를 복사하지 않는 경우 SELECT INTO에만 작동합니다. INSERT INTO 문을 사용의 단점은 수동으로 실시하는 모든 열 이름을 제공해야한다는 것입니다, 플러스 일부 외래 키 제약 조건이 실패 할 경우, 그것은 당신에게 몇 가지 문제를 줄 수 있습니다.

    모든 anwsers 덕분에 훌륭한 솔루션이 있습니다하지만 난 marc_s anwser을 수용하기로 결정했습니다.

  8. ==============================

    8.당신은 소스 / 대상 서버를 선택할 수 없습니다.

    당신은 소스 / 대상 서버를 선택할 수 없습니다.

    데이터베이스가 같은 서버에있는 경우이 작업을 수행 할 수 있습니다 :

    (! 위해 포함) 테이블의 컬럼이 동일한 경우에 당신은이 작업을 수행 할 수 있습니다

    INSERT INTO [destination database].[dbo].[destination table]
    SELECT *
    FROM [source database].[dbo].[source table]
    

    당신은 당신이 백업 / 소스 데이터베이스를 복원 할 수 있습니다 일단이 작업을 수행합니다. 당신이 더 자주이 작업을 수행해야하는 경우 나는 당신이 소스 데이터베이스를 정의한 SSIS 프로젝트를 시작하는 것이 좋습니다 (당신은이 모든 서버에 모든 연결을 선택할 수 있습니다) 당신이 당신의 데이터가 이동하는 프로젝트를 만듭니다. 자세한 내용은 여기를 참조하십시오 http://msdn.microsoft.com/en-us/library/ms169917%28v=sql.105%29.aspx

  9. ==============================

    9.그것은 SQL Server 관리 Studio에서 "... 가져 오기 / 내보내기 데이터"를 통해 수행 할 수 있습니다

    그것은 SQL Server 관리 Studio에서 "... 가져 오기 / 내보내기 데이터"를 통해 수행 할 수 있습니다

  10. ==============================

    10.소스로부터 목적지로 데이터를 복사하는 경우 :

    소스로부터 목적지로 데이터를 복사하는 경우 :

    use <DestinationDatabase>
    select * into <DestinationTable> from <SourceDataBase>.dbo.<SourceTable>
    
  11. ==============================

    11.이것은 다소 솔루션 주위에 이동이지만 내가 다른 사람이 문제에 대한뿐만 아니라 작동 희망 나를 위해 일한 :

    이것은 다소 솔루션 주위에 이동이지만 내가 다른 사람이 문제에 대한뿐만 아니라 작동 희망 나를 위해 일한 :

    당신은 당신이 수출에 원하는 테이블에 선택 SQL 쿼리를 실행하고 드라이브에 .XLS으로 결과를 저장할 수 있습니다.

    이제 당신은 모든 열 및 인덱스 데이터를 추가 할 테이블을 만듭니다. 이것은 쉽게 실제 테이블의 오른쪽 클릭으로 수행 할 수 있습니다 및 스크립트 옵션에 만들기 선택.

    지금 당신은 바로 당신에게 테이블을 추가하고> 가져 오기 작업을 선택하려는 DB 클릭 할 수 있습니다.

    가져 오기 내보내기 마법사가 열립니다 및 입력 데이터 소스로 next.Select은 Microsoft Excel을 선택하고 검색하고 이전에 저장 한 .xls 파일을 선택합니다.

    이제 또한 대상 서버 우리가 이전에 만든 대상 테이블을 선택합니다.

    주 : 정체성을 기반으로 필드가있는 경우이 데이터도 삽입됩니다로서, 대상 테이블에 사용자가 ID 속성을 제거 할 수 있습니다. 당신은 단지 다음 ID 속성 등이 하나가 있다면 그래서 가져 오기 프로세스를 오류 것입니다.

    이제 다음과 히트 마무리를 쳐서 오류가 발생하지 않으면 많은 레코드를 가져올 및 반환 성공되는 방법 당신을 보여줍니다.

  12. ==============================

    12.C # .NET : 사용 가능한이있는 경우 또 다른 옵션을 선택합니다. 특히, Microsoft.SqlServer.Management.Smo 네임 스페이스.

    C # .NET : 사용 가능한이있는 경우 또 다른 옵션을 선택합니다. 특히, Microsoft.SqlServer.Management.Smo 네임 스페이스.

    내 SSIS 패키지 중 하나의 스크립트 구성 요소에서 다음과 유사한 코드를 사용합니다.

    var tableToTransfer = "someTable";
    var transferringTableSchema = "dbo";
    
    var srvSource = new Server("sourceServer");
    var dbSource = srvSource.Databases["sourceDB"];
    
    var srvDestination = new Server("destinationServer"); 
    var dbDestination = srvDestination.Databases["destinationDB"];
    
    var xfr = 
        new Transfer(dbSource) {
            DestinationServer = srvDestination.Name,
            DestinationDatabase = dbDestination.Name,
            CopyAllObjects = false,
            DestinationLoginSecure = true,
            DropDestinationObjectsFirst = true,
            CopyData = true
        };
    
    xfr.Options.ContinueScriptingOnError = false; 
    xfr.Options.WithDependencies = false; 
    
    xfr.ObjectList.Add(dbSource.Tables[tableToTransfer,transferringTableSchema]);
    xfr.TransferData();
    

    내가 명시 적으로 검색하고 참고 문헌에 Microsoft.SqlServer.Smo 라이브러리를 추가했다 생각합니다. 그러나 그 이외의,이 날 위해 일하고있다.

    업데이트 : 내가 기억보다는 네임 스페이스와 라이브러리가 더 복잡했다.

    라이브러리의 경우, 참조를 추가합니다

    네임 스페이스를 들어, 추가 :

  13. from https://stackoverflow.com/questions/11009189/export-table-data-from-one-sql-server-to-another by cc-by-sa and MIT license