SQL Server없이 SQL Server .bak 파일을 복원 할 수 있습니까?


16

.bakSQL Server 2005 덤프의 일부 큰 파일이 있습니다.

SQL Server를 사용하지 않고 PostgreSQL, MySQL 또는 플랫 텍스트 파일로 복원 할 수 있습니까?

오픈 소스 솔루션이 가장 유용합니다.


1
"나는이 작업을 위해 그렇게 할 필요가 없습니다." 왜 안돼? 당신이하려는 일을하는 방법입니다.
swasheck

다른 것으로 복원해도 의미가 있습니까? 결과 데이터로 무엇을 하시겠습니까?
Philᵀᴹ

1
@ 필자는 결과 데이터를 PostgreSQL 데이터베이스 또는 일반 텍스트 파일로 옮기고 싶습니다.
Abe

1
@ swasheck 나는 질문에서 혼란스러워 보이는 것처럼 인용 된 줄을 제거했습니다. 그러나 귀하의 질문에 대답하기 위해, 나는 그것을 사용하는 방법을 모르고 내 서버는 Linux를 실행합니다. 사용 가능한 Windows 랩톱에 충분한 공간이 없습니다.
Abe

2
그것은 지금까지 없었던 정보입니다. :). 추가 정보에 감사드립니다-계획이 있습니다
swasheck

답변:


19

여기 내가 제안하는 것이 있습니다.

  1. 백업을 저장할 충분한 디스크 공간이있는 Windows를 실행하는 가상 머신을 빌드하십시오. 백업 파일을 거기에 복사하십시오. 아직 가상 머신을 구축 할 수있는 능력이 없다면 Oracle VirtualBox와 같은 무료 제품을 사용하면 됩니다.
  2. SQL Server 평가판을 다운로드하여 설치하십시오 . 데이터베이스 엔진과 관리 도구-완료를 모두 포함해야합니다.
  3. VM에 백업을 보유 할 공간이 충분하지만 복원 할 공간이 충분하지 않은 경우 Red-Gate 제품의 평가판을 동일한 이름으로 사용하여 "가상 복원"을 수행 할 수 있습니다 . 복원 된 것처럼 백업 파일). 그렇지 않으면 정상적인 방법으로 데이터베이스를 복원하십시오 .

  4. 데이터베이스가 정상 복원 또는 가상 복원을 통해 사용 가능 해지면 다음과 같은 방식으로 스키마 및 데이터에 대한 스크립트를 생성 할 수 있습니다.

    • Management Studio를 열고 인스턴스에 연결하십시오.
    • 개체 탐색기를 엽니 다.
    • 새로 복원 된 데이터베이스를 마우스 오른쪽 단추로 클릭하고 작업> 스크립트 생성 ...을 선택하십시오.
    • 다음을 클릭하고 다음을 클릭하십시오.
    • "스크립트 옵션 선택"페이지에서 아래로 스크롤하여 "스크립트 데이터"를 True로 설정하십시오.
    • 다음을 클릭하십시오
    • 관련 개체를 모두 확인하고 다음을 클릭하십시오.
    • 원하는 테이블을 확인하고 다음을 클릭하십시오.
    • 파일에 스크립트를 작성하도록 선택하십시오. 이제 SQL Server 삽입 구문을 사용하여 모든 객체와 데이터를 포함하는 파일을 만들었습니다. Postgres에서 작동하는 형식으로 출력을 가져와야합니다 (사소한 구문 차이는 확실하지 않습니다).

또는 bcp 유틸리티 를 사용하여 데이터를 CSV 파일 또는 이와 유사한 형식으로 추출 하려고 시도 할 수 있지만, 테이블별로이 작업을 수행하거나 영리한 스크립팅 (PowerShell, T-SQL, C # / SMO 등)을 사용해야합니다. )를 사용하여 모든 bcp 명령을 생성하십시오. CSV 파일에 들어가면 Postgres에 데이터를 대량로드하는 것이 쉽지만 테이블을 생성하는 작업은 여전히 ​​남아 있습니다.

마지막 제안으로 .bak 파일이 엄청 나지 않고 데이터가 기밀이 아닌 경우 필요한 형식으로 파일을 기꺼이 생성하려고합니다. 공간이 충분한 Windows VM이 많이 있습니다. 특히 .BAK 파일을 검색 할 수있는 위치로 가져 오는 것이 문제입니다. 특히 대부분의 파일 공유 서비스 지원보다 큰 경우 더욱 그렇습니다.


+1 컴퓨터에 도착하면 bcp 방법을 제안하려고했습니다. 일부 문제는 테이블 구분 기호, IDENTITY (시퀀스, pg), nvarchar입니다. 그렇지 않으면 이것이 내 편집 섹션에서 제안한 것입니다 (sans Red-Gate).
swasheck

8, 20GB .bak 파일이 있으며 도움이 될 수 있다면 좋을 것입니다. 그러나 gis.se, gis.stackexchange.com/q/28281/3218gis.stackexchange.com/q/28257 에서 관련 질문을 참조하십시오 USDA 토양 데이터베이스 (SSURGO)에 대해 / 3218 시뮬레이션 모델링을 위해 자동화 된 방식으로 이러한 데이터에 액세스하는 것은 현재 매우 어렵습니다. 이러한 데이터를보다 유용한 구조로 사용하는 것이 과학에 큰 도움이 될 것입니다. 내 서버에서 다운로드 할 수 있습니다. 이 데이터는 기밀이 아니며 확장 에이전트에서 $ 50 / CD 또는 $ 100 / DVD 또는 그 이하로 구입할 수 있습니다.
Abe

GIS.SE에서 데이터를 얻는 방법에 대한 답변이있는 것 같습니다. 나는 그 사이트를 보았지만 파일이 SQL Server 백업임을 지정하는 곳을 보지 못했습니다. 이 파일들을 어디서 / 어디서 얻었습니까?
swasheck

7

불행히도 파일 자체의 내부에 대한 깊은 지식없이 .bak 파일의 내용에 액세스 할 수있는 방법이 없습니다. 나는 여기에이 정보에 대한 특권이있는 한 사람을 생각할 수 있지만, 그 사람이 당신에게 정보를 제공하는 방법을 말해 줄 수 있는지에 대해서는 말할 수 없습니다.

따라서 SQL Server 인스턴스를 설치해야합니다. 또한이 인스턴스가 Postgres 서버와 통신 할 수 있는지 확인해야합니다.

첫 번째 경로는 Postgres Windows ODBC 드라이버를 설치하고 pg 서버에 대한 연결을 설정하는 것입니다. 그런 다음 SSIS를 사용하여 데이터 마이그레이션을 스크립팅 할 수 있습니다. 이 경로를 사용하려면 데이터베이스 서버를 설치할 때 SSIS를 설치하는 것이 좋습니다.

다른 옵션에는 ODBC 드라이버 연결도 포함되지만 SQL Server에서 연결된 서버를 만들고 SQL Server를 통해 pg 인스턴스에서 삽입을 실행할 수 있습니다. 나는 여기 에이 정확한 질문에 대답했기 때문에 찾기가 어렵지 않아야합니다.

편집하다

Aaron의 의견을 통합하기 위해 SQL Server를 시작하고 실행하면 다양한 방법으로 데이터를 플랫 파일로 내보낼 수도 있습니다. 이 경로를 선택하면 알려 주시면 몇 가지 방법을 게시하겠습니다.

편집 (2) :

구조를 미리 작성하지 않으면 연결된 서버 프로세스가 최선의 방법이 아닐 수 있습니다. 내가 선호하는 방법이지만 일반적으로 양쪽에 이미 구조가 있습니다.

그것은 Aaron Bertrand의 대답이 최선의 대답으로 남습니다. 데이터 유형 외에도 ( IDENTITYvs SEQUENCE, postgres는 NVARCHAR데이터베이스 자체에 인코딩을 설정 한 이후로 아무것도 알지 못합니다 ). 포스트 그레스의 아무것도 알고 CREATE CLUSTERED INDEX( CLUSTER당신을 위해 작동 할 수있다). 마지막으로, 주석에서 공간 데이터를 사용한다는 것을 알았으므로 postgresql은 CREATE SPATIAL INDEX구문에 대해 아무것도 모릅니다 . INDEXTYPE공간 인덱스를 만들려면 postgis를 설치하고 키워드를 사용해야합니다 . 마지막으로 스키마를 적절하게 처리해야합니다.

긴 이야기 요약 :

  1. Aaron Bertrand의 방법을 사용하여 스크립트와 데이터를 생성하십시오 (아마도 테이블 수준을 고수했을 것입니다)
  2. 인덱스 DDL을 기록해 두십시오 (아직 유효한 경우).
  3. 일단 구조와 데이터가 배치되면 postgres에 인덱스 생성

3
Postgres와 통신하기 위해 SQL Server를 구성해야한다고 생각하지 않습니다. SQL Server를 설치하면 Postgres에서 이해할 수있는 다양한 형식으로 데이터를 추출 할 수 있습니다.
Aaron Bertrand

사과. 외부 연결을 수락하도록 Postgres를 구성해야 함을 의미했습니다 (이 경우 SQL Server)
swasheck

사과하지 마십시오. :-) SQL Server를 Postgres와 직접 또는 그 반대로 대화 할 필요가 없음을 분명히 밝혔습니다.
Aaron Bertrand
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.