원격 SQL Server 데이터베이스를 로컬 드라이브에 어떻게 백업 할 수 있습니까?


241

데이터베이스를 원격 서버에서 로컬 서버로 복사해야합니다. SQL Server Management Studio를 사용하려고했지만 원격 서버의 드라이브에만 백업합니다.

일부 요점 :

  • 파일을 복사 할 수있는 방식으로 원격 서버에 액세스 할 수 없습니다.
  • 서버에 대한 UNC 경로를 설정할 수있는 권한이 없습니다.

이 데이터베이스를 어떻게 복사 할 수 있습니까? 타사 도구를 사용해야합니까?


1
디렉토리 구조에 전혀 액세스 할 수 없다면이 작업을 시도해야 할 것입니다.
JNK

3
데이터베이스를 구체적으로 백업하지 않고 복사하려고합니까? 그렇다면 데이터베이스 복사 마법사를 사용하거나 SQL Server 2008에서 "스크립트 생성"옵션을 사용하여 스키마 및 데이터를 스크립팅 할 수 있습니다. Redgate SQL Compare 및 Data Compare도 여기에서 유용 할 수 있습니다.
Martin Smith

1
@MartinSmith 귀하의 제안에 따라 Generate and Publish Scripts옵션을 사용하여 스크립트를 생성했습니다 . 모든 테이블과 스키마를 얻었지만 테이블이있는 데이터는 얻지 못했습니다. 이 문제를 어떻게 해결할 수 있습니까?
ur 진심으로 친구

답변:


182

Microsoft SQL Server Management Studio에서 백업하려는 데이터베이스를 마우스 오른쪽 단추로 클릭하고 태스크-> 스크립트 생성을 클릭하십시오.

그러면 원격 서버에서도 데이터베이스의 적절한 백업을 수행하기 위해 다음을 설정할 수있는 마법사가 열립니다 .

  • 백업하려는 데이터베이스를 선택하고 다음을 누르십시오.
  • 옵션에서 그것은 당신에게 나타납니다 :
    1. 2010 년 : 표 /보기 옵션에서 '스크립트 데이터'및 '스크립트 색인'을 True로 변경하고 다음을 누르십시오.
    2. 2012 년 : '일반'에서 '데이터 유형을 스크립트로'에서 '스키마 만'에서 '스키마 및 데이터'로 변경하십시오.
    3. 2014 년 : "스크립팅 옵션 설정"단계에서 데이터를 스크립팅하는 옵션이 이제 "숨겨집니다", "고급"을 클릭하고 "스크립트 유형의 데이터"를 "스키마 및 데이터"값으로 설정해야합니다.
  • 다음 네 개의 창에서 '모두 선택'을 누른 다음
  • 새 쿼리 창에 스크립팅하도록 선택

작업이 완료되면 백업 스크립트가 준비됩니다. 새 로컬 (또는 원격) 데이터베이스를 작성하고 스크립트에서 첫 번째 'USE'문을 변경하여 새 데이터베이스를 사용하십시오. 안전한 장소에 스크립트를 저장하고 비어있는 새 데이터베이스에 대해 실행하십시오. 그러면 (거의) 중복 로컬 데이터베이스가 생성되어 원하는대로 백업 할 수 있습니다.

당신이 경우 전체 원격 데이터베이스에 대한 액세스를, 당신은 '스크립트의 모든 객체'마법사의 첫 번째 창을 확인하고 다음 창에서 True로 '스크립트 데이터베이스'옵션을 변경 할 수 있습니다. 그러나 스크립트의 데이터베이스 이름을 완전히 검색하고 새 데이터베이스로 바꾸어야하며,이 경우 스크립트를 실행하기 전에 만들 필요가 없습니다. 이렇게하면보다 정확한 복제본이 생성되지만 권한 제한으로 인해 사용하지 못할 수도 있습니다.


9
SQL Server Management Studio 2012에는 '스크립트 데이터'와 같은 옵션이 없으므로 최신 버전에서는 2 단계에서 다음을 수행하십시오. '일반'아래에서 '데이터 유형을 스크립트로'에서 '스키마 만'에서 '스키마로 변경하십시오. 그리고 데이터 '.
berezovskyi

1
SQL Server 2008 R2에서 확인했으며 매력처럼 작동했습니다. 백업 전략을 위해 그것을 사용하려면 직접 추가 작업이 필요하지만 RedGate 등과 같은 타사 도구를 사용하는 것보다 낫다고 생각합니다. 어쩌면 편집증이지만 대부분의 타사 도구에는 추가 코드가 있다고 생각합니다. 스크립트의 단순성과 명확성을 제어하고 줄입니다. 정말 고마워.
QMaster

2
@ShaunLuttin '데이터 유형을 스크립트로'를 '스키마 만'에서 '스키마로'변경하고 두 번째 단계 (2012 년)의 데이터를 변경하면 INSERT 문이 표시되어야합니다.
Daniel Gill

6
SSMS 2014에서는 이제 스크립트 저장 위치를 ​​선택할 때 스키마 만에서 스키마 및 데이터로 변경하는 옵션이 "고급"뒤에 숨겨져 있습니다.
MushinNoShin

2
이 방법을 사용하여 스크립트를 실행하려고하면 SQL Server 관리 스튜디오에서 "프로그램 실행을 계속하기위한 메모리 부족"이라는 오류가 발생합니다 (mscorelib)
Rob

51

먼저 Everyone과 함께 컴퓨터의 로컬 경로 (아래 그림 참조)에 대한 모든 권한을 부여하십시오. 또는 SQL Server 에이전트 계정에 권한을 부여 할 수도 있습니다.

둘째, 다음을 실행하십시오.

BACKUP DATABASE [dev] TO  DISK = N'\\myMachine\c\dev.bak' WITH COPY_ONLY, INIT;

14
이것이 질문에 대한 답변입니다. "스크립트 테이블 및 데이터"가 아니라 "원격 SQL Server 데이터베이스를 로컬 드라이브에 백업"합니다. 누군가 :이 답변을 수락 된 것으로 표시하고 Daniel Gill의 잘못된 답변을 제거하십시오.
Henrik Holmgaard Høyer

이것이 더 나은 대답이라고 생각하지만 "이 데이터베이스를 어떻게 복사 할 수 있는지에 대한 아이디어가 있습니까?"라는 질문이 있습니다. 특별히 백업하지 않습니다.
Oliver Townshend

11
이것은 원격 시스템이 로컬 시스템 파일에 액세스 할 수 있다고 가정합니다 (일반적인 경우는 아님).
Anders Lindén

한 번 이상 당신을 공표 할 수 있기를 바랍니다. 이것은 완벽한 답변이며 몇 년 동안하고 싶었던 것입니다. 너무 간단합니다 ... 너무 완벽합니다. 그것은 세상의 모든 경우를 해결하지는 못하지만 SQL Server가있는 컴퓨터가 아닌 컴퓨터에 원격으로 연결되어있는 곳에서는 완벽하게 작동했습니다.
웨이드 해 틀러

이것은 나에게도 일꾼이 있습니다. 로컬 폴더를 모두 와 일시적으로 공유하고 백업을 수행 한 다음 공유를 비활성화하십시오. 또한 이것이 정답이라고 생각합니다.
프레드 로저스

51

데이터와 스키마 만 복사하려면 (저장 프로 시저, 함수 등은 복사하지 않음) SQL Server 가져 오기 및 내보내기 마법사를 사용하고 대상 데이터베이스를 선택할 때 새로 만들기 ... 를 선택하십시오.

데이터베이스> 태스크> 데이터 가져 오기를 마우스 오른쪽 단추로 클릭하십시오.

데이터 소스를 선택하십시오

  • 데이터 소스 : SQL Server Native Client
  • 서버 이름 : 원격 서버
  • 인증 :
  • 데이터베이스 : db 이름

목적지를 선택하십시오

  • 데이터 소스 : SQL Server Native Client
  • 서버 이름 : 로컬 서버
  • 인증 :
  • 데이터베이스 :New...

나머지는 곧장입니다.


2
이것은 받아 들인 대답보다 훨씬 나에게 효과적이었습니다. 테이블 간의 관계를 훨씬 깨끗하게 처리합니다.
MushinNoShin

7
웰프. 불행히도 ID와 기본 제약 조건을 설정하지 않습니다. :(
MushinNoShin

1
이것은 스크립트를 생성하는 것보다 훨씬 더 나은 방법입니다. 스크립트는 때때로 꽤 클 수 있습니다. 개인 취향. 위반 없음 :)
Vikas

이것은 더 간단하고 내가 갈 것입니다. 그러나 어떤 이유로 object_id, create_data와 같은 열이 필요한 경우 sys.tables의 AS AS 날짜를 수정하면 생성시 수정됩니다.
Crismogram

@MushinNoShin 먼저 스크립트를 생성 한 다음 매핑 단계에서 ID 삽입을 활성화하여 데이터를 가져 오거나 내보낼 수 있습니다.
하상

29

원격 서버에서 로컬 디스크로 백업을 만들 수 는 없습니다 .이를 수행 할 방법은 없습니다. 그리고 내가 아는 한, 타사 도구도 없습니다.

원격 서버 시스템에서 백업을 작성하고 누군가가이를 압축하여 보내도록 할 수 있습니다.


5
동의하지 않습니다. 많은 상황에서 MS SQL Server Management Studio의 '스크립트 생성'명령을 사용하여 원하는대로 수행 할 수있는 로컬 데이터베이스를 생성하기 위해 실행할 수있는 스크립트를 작성할 수 있습니다. 질문에 대한 아래의 답변 또는 Martin Smith의 의견을 참조하십시오.
Daniel Gill

19
@Rafid : 예 그건 -하지만 하지 진정한 BACKUP - 그것은 스크립트 / 데이터 내보내기 .....입니다
marc_s

2
@marc_s 내 보낸 사본과 다른 "실제 백업"은 무엇입니까? 일지? 다른 거있어?
Dronz

31
@Dronz : 예! 스크립트 내보내기는 테이블의 데이터와 구조를 재현하지만 트랜잭션 로그, 통계 및 SQL Server 데이터베이스의 기타 중요한 부분은 포함 할 수 없습니다 .
marc_s

1
@ShaunLuttin, 데이터를 포함시킬 수 있습니다.
Erwin Rooijakkers

17

나는 이것이 늦게 답이라는 것을 알고 있지만 SSMS에서 스크립트 생성 옵션을 사용한다고 말하는 대부분의 투표 응답에 대해 의견을 말해야합니다.

문제는이 옵션이 의존성을 고려하지 않기 때문에 반드시 올바른 실행 순서로 스크립트를 생성하지는 않는다는 것입니다.

작은 데이터베이스의 경우 문제가되지 않지만 큰 데이터베이스의 경우 스크립트를 수동으로 다시 정렬해야하기 때문입니다. 500 개체 데이터베이스에서 시도해보십시오.)

불행히도이 경우 유일한 솔루션은 타사 도구입니다.

비슷한 작업에 ApexSQL (Diff 및 Data Diff)의 비교 도구를 성공적으로 사용 했지만 여기에 언급 된 다른 항목, 특히 Red Gate에는 문제가 없습니다.


1
나는 동의하지 않는다. 나를 위해 SQL은 항상 의존성을 올바르게 주문한다. 당신이 언급 한 행동을 재현하는 방법에 대한 구체적인 예가 있습니까?
sawe

또한이 문제를 고려할 수있는 옵션이 있습니다
Gaspa79

13

SQLBackupAndFTP 를 시도 할 수 있습니다 . 데이터베이스의 모든 개체와 테이블의 모든 행에 대한 INSERT 문을 만드는 스크립트를 만듭니다. 모든 데이터베이스에서이 스크립트 파일을 실행할 수 있으며 전체 데이터베이스가 다시 작성됩니다.


4
두 번째. SQL Server Management Studio의 새 버전을 설치해야했지만 예전처럼 스크립트를 작성할 수 없었습니다. 이 도구는 원격 서버 (appharbor sqlserver 애드온)에 대한 전체 액세스 권한이 없어도 문제없이 신속하게 문제를 해결했습니다.
Daniel Gill

1
이 소프트웨어는 리소스를 많이 사용합니다.
Dementic

버그가있는 것 외에도 이것이 올바르게 작동하는지 완전히 확신하지는 못합니다. PHP를 통해 원격 서버에 아무 문제없이 연결할 수 있지만, 그렇지 않습니다? 서버 자체에 적절한 설정이있을 때 그래서 나중에 ...
Shawn Rebelo

7

원격 데이터베이스를 복사하는 방법에 대한 설명은이 블로그를 참조하십시오.

공유 호스팅 환경에서 SQL Server 2008 데이터베이스 백업


1
이 방법은 데이터베이스 구조를 스크립팅하고 로컬로 만든 다음 SQL 관리 도구를 사용하여 로컬 데이터베이스와 원격 데이터베이스간에 데이터를 복사하는 방법을 설명합니다.
Drew Noakes

1
한 번에 데이터를 스크립팅하기 위해 '스크립트 데이터'옵션을 True로 전환 할 수 있습니다.
Daniel Gill

복사와 백업은 서로 다른 두 가지입니다.
Anders Lindén

이것은 SQL Server 2012를 사용하는 2016 데이터베이스에서 작업해야하고 2012 년에 2016 백업을 사용할 수 없기 때문에 완벽했습니다.
majjam

6

원격 SQL 서버에서 로컬 PC로 bak 파일을 얻는 99 % 솔루션이 있습니다. 내 게시물 http://www.ok.unsode.com/post/2015/06/27/remote-sql-backup-to-local-pc 에 설명했습니다 .

일반적으로 다음과 같습니다.

  • SQL 스크립트를 실행하여 bak 파일 생성

  • SQL 스크립트를 실행하여 각 bak 파일을 varbinary 필드 유형의 임시 테이블에 삽입 하고이 행을 선택하고 데이터를 다운로드하십시오.

  • 이전을 반복하십시오. bak 파일만큼 많은 시간을 보냄

  • SQL 스크립트를 실행하여 모든 임시 리소스를 제거하십시오.

그게 다야, 로컬 PC에 bak 파일이 있습니다.


5

데이터베이스 복사를 사용할 수 있습니다. 원격 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 작업을 선택하고 데이터베이스 복사를 사용하십시오. 소스 서버와 대상 서버에 대해 묻습니다. 소스는 원격이고 대상은 SQL 서버의 로컬 인스턴스입니다.

그것은 쉽다


데이터베이스 복사에는 SysAdmin 권한이 필요합니다. 데이터베이스의 일반 사용자를위한 솔루션이 아닙니다.
Buggieboy

오늘 내 문제에서 우리 dev 팀은 sysadmin 권한을 가지고 있습니다. Pouyan의 접근 방식을 사용하겠습니다.
Hammer 코드 코드

그러나 나는 매일 그것을해야하고 이것을 달성하기 위해 스크립트가 필요합니다
정화기


3

위의 답변은 정확하지 않습니다. 데이터가있는 SQL 스크립트는 백업이 아닙니다. 백업은 indizes를 포함하여 현재 구조로 전체 데이터베이스를 포함하는 BAK 파일입니다.

물론 BAK 파일에는 모든 데이터가 포함 된 전체 백업이 포함되어 있으며 원격 SQL Server 데이터베이스의 인스턴스는 로컬 시스템에서 검색 할 수 있습니다.

이것은 예를 들어, 로컬 컴퓨터에 백업 BAK 파일 저장에 직접, 상용 소프트웨어와 함께 할 수있는 이 사람은 직접 로컬 컴퓨터에 원격 SQL DB에서 백업을 생성합니다.


이를 위해서는 sysadmin 권한이 필요합니다.
LarryBud

권리. SQL Server 인스턴스에 원격으로 연결하는 데 사용되는 계정 (Windows 또는 SQL Server)에는 백업 정크를 검색하여 로컬 시스템에 저장하려면 sysadmin 권한이 필요합니다. FIDA Software에서 언급 한 도구는 백업 정크를 검색하는 동안 SQL Server와의 네트워크 트래픽을 암호화하고 압축합니다. 시스템에 bak 파일이 있으면 원하는 위치에 복원 할 수 있습니다.
Matthias

1

Martin Smith가 말했듯이 컴퓨터 나 파일 시스템에 액세스 할 수없는 경우 소스 및 대상 시스템을 비교하려면 Red Gate 또는 Adept와 같은 타사 도구를 사용해야합니다. Red Gate의 도구를 사용하면 객체와 스키마 및 데이터를 복사 할 수 있습니다.


1

다음 조건이 충족되면 원격 SQL Server 인스턴스에서 로컬 드라이브로 백업을 수행 할 수 있습니다.

  1. 로컬 드라이브에 공유 폴더가 있습니다.
  2. 공유 폴더는 SQL Server 상자에서 액세스 할 수 있습니다.

이제 backup 명령을 지정할 때 디스크 옵션을 지정할 때 공유 폴더 경로를 사용하십시오.


그리고 @Vivek의 답변과 어떻게 다른가요?
Martin Schröder

1

그냥 이것을 시도하십시오 :

1) 컴퓨터에서 모든 권한을 가진 폴더를 공유

2) SQL 서버에서 : 제어판-> 관리 도구-> 서비스-> 모든 SQL 서비스를 마우스 오른쪽 버튼으로 클릭하십시오.

로그온 탭은 도메인 관리자로 시작해야합니다.

3) SQL Server의 유지 관리 마법사에서 백업 위치와 폴더를 저장하십시오 (\ yourcomputername \ sharedfoldernam)

우리 회사에서 SQL Server 2008의 8 서버에서 원격 백업을 수행했습니다.


1

Ola Hallengren 이 제공하는 스크립트 백업 솔루션에 대해서는 아무도 언급 하지 않았습니다. 실제로 I 타입으로 사용하고 무료로 네트워크의 UNC 경로에 원격 서버 (에서 백업에 DB를 당신을 허용을 SSMS를 통해 내 dev PC의 공유에 대한 원격 액세스가없는 dev 서버에서 DB를 백업하는 경우). 2008 년부터 사용 가능하며 SQL Server 2005에서 2014까지 작동합니다.

설정 한 공유에 충분한 액세스 권한이 있는지 확인해야합니다. 백업 프로세스가 지속되는 동안 '모든 사람'AD 그룹에 대한 전체 읽기 / 쓰기를 허용하는 경향이 있습니다. 더 제한적인 것을 파악하기에는 너무 게으 르기 때문입니다. 개인적인 선택.

잘 사용하고 잘 문서화되어 있으며 매우 유연합니다. 나는 procs와 로깅 테이블을 작은 유틸리티 데이터베이스에 넣은 다음 실행하는 경향이 있습니다. 모든 것이 AD 도메인에 있고 공존 서버 또는 다른 서버에 있다는 의미에서 원격이 아니라면 매우 효과적입니다.

아주 오래된 스레드에 추가하는 것에 대한 사과가 있지만 다른 것을 찾을 때이 문제를 발견 하고이 주제를 찾는 모든 사람에게 가치있는 추가 기능이라고 생각했습니다.


1

2019의 경우 실제 로컬 백업을 원하면 mssql-scripter를 사용하는 것이 좋습니다 . 예, 스크립트이지만 원하는 모든 것을 포함하도록 조정할 수 있으며 모든 데이터를 포함 할 수 있습니다. 나는 리눅스 머신에서 이것을 사용하여 매일 자동 백업을 수행하는 bash 스크립트를 작성했다. 내 요점 확인 :

https://gist.github.com/tjmoses/45ee6b3046be280c9daa23b0f610f407

0

한 번만 할 수 있습니다 ...이 작업을 수행하려면 원격 서버에서 공유를 열어야합니다. 기본 위치보다 공유 자체에 백업을 직접 배치 할 수 있습니다.

일반적으로 관리자는 백업을 가져 와서 일부 공유 폴더에서 공유합니다. 거기에 백업을 배치하면 작동하는지 시도했습니다. 효과가있었습니다.


0

SSMS에서 스크립트 생성을 사용하는 경우 고급 단추를 클릭하십시오. '종속 개체에 대한 스크립트 생성'옵션에서 True를 클릭하십시오. 클릭하면 각 개체의 모든 종속성이 올바른 순서로 스크립팅됩니다.


SSMS v17.8.1의 기본값은 True입니다.
Chris Catignani

0

일부 타사 백업 프로그램을 사용하면 특정 네트워크 권한으로 파일 전송을 설정할 수 있습니다. SQL Server 서비스가 제한된 계정으로 실행 중이고 네트워크 권한이 충분하지 않을 때 매우 유용합니다. 이 작업을 해결 하는 EMS SQL 백업 을 사용해보십시오 .


0

내가 사용하는 레드 게이트 백업 프로 7 이 목적을 위해 도구를. 다른 위치에 타일을 만들 때 백업 파일에서 미러를 만들 수 있습니다. 네트워크 및 호스트 스토리지에서 생성 한 후 백업 파일을 자동으로 복사 할 수 있습니다.


0

"모두"읽기 / 쓰기 권한이있는 로컬 공유 폴더를 만듭니다.

대상 데이터베이스에 연결하고 백업을 시작한 후 아래와 같이 공유를 가리 킵니다.

\ mymachine \ shared_folder \ mybackup.bak

(Windows 도메인 환경에서 시도)


0

나는 이것이 오래된 게시물이라는 것을 알고 있지만 가장 가치있는 것은 데이터베이스를 마우스 오른쪽 버튼으로 클릭하고 "작업"-> "데이터 계층 응용 프로그램 내보내기"를 선택하는 가장 간단한 솔루션이라는 것을 알았습니다. 이 옵션은 서버가 Azure에서 호스팅되기 때문에 사용할 수 있습니다 (과거 Azure에서 작업 한 것을 기억하는 것에서 .bacpac 형식은 매우 일반적이었습니다).

완료되면 로컬 서버 "데이터베이스"목록을 마우스 오른쪽 단추로 클릭하고 "데이터 계층 응용 프로그램 가져 오기"를 사용하여 .bacpac 파일을 사용하여 로컬 컴퓨터로 데이터를 가져올 수 있습니다.

수출 시간 이 오래 걸릴 수 있음을 명심하십시오 . 광산이 수출을 마치는 데 약 2 시간이 걸렸습니다. 그러나 가져 오기 부분이 훨씬 빠릅니다.


-1

로컬 네트워크에있는 경우 로컬 머신의 폴더를 공유하고 백업 대상 폴더로 사용할 수 있습니다.

예:

  • 로컬 폴더 :

    C:\MySharedFolder -> URL: \\MyMachine\MySharedFolder

  • 원격 SQL Server :

    Select your database -> Tasks -> Back Up -> Destination -> Add -> Apply '\\MyMachine\MySharedFolder'

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