2008 년 백업용 SQL Server 2012 이전 버전과의 호환성


14

SQL Server 2008을 사용하는 클라이언트가 많이 있으며 이것이 서버에도 있습니다. 백업 파일을 사용하여 클라이언트와 사무실간에 데이터베이스를주고받습니다.

SQL Server 2012에서 백업을 만들 때 2008 인스턴스로 복원 할 수있는 방법이 없다는 것을 읽었습니다. 호환성 수준 이이 문제를 처리한다고 가정했지만 그렇지 않습니다. 따라서 업그레이드 방법에 대한 손실이 있습니다. 모든 고객을 한꺼번에 업그레이드하는 것 외에는 불가능합니다.이를위한 확실한 방법은 없습니다.

데이터베이스를 클라이언트로 보내고 클라이언트에서 데이터베이스를 받아야합니다. 이것은 SQL Server의 첫 번째 버전 업그레이드이므로이 문제가 처음입니다. 진행하는 방법에 대한 아이디어가 있습니까?


4
서로 다른 인스턴스 이름으로 SQL Server 2008 인스턴스 하나와 SQL Server 2012 인스턴스 하나를 서버에 동시에 설치할 수 있습니다. 다른 버전의 클라이언트 문제를 해결할 수 있습니까?
Mikael Eriksson

SO에 대한 비슷한 질문 : stackoverflow.com/q/1744808/95710
DForck42

답변:


16

여기에는 파일의 버전 번호와 호환성 수준의 두 가지가 있습니다. 2008 ~ 2008R2 또는 2008R2 ~ 2012와 같은 최신 주 버전에 데이터베이스를 연결하면 데이터베이스 버전이 영구적으로 변경되므로 해당 데이터베이스를 이전 버전에 다시 연결할 수 없습니다.

호환성 수준은 이전 버전의 SQL Server에서 작동하던 구식 폐기 된 T-SQL을 구문 분석하기위한 것입니다. 디스크에 데이터가 저장되는 방식은 변경되지 않습니다.

데이터베이스를 이전 버전의 SQL Server에있는 사람에게 제공하려면 데이터를 내보내고 다른 데이터베이스로 가져와야합니다. Red Gate의 데이터 비교와 같은 도구가 도움이됩니다.


예, 전에도 똑같은 문제가있었습니다. 전체 데이터베이스를 스크립팅하고 모든 데이터를 스크립팅했습니다. 그날 레드 게이트의 SQL 비교 및 ​​데이터 비교가 구조되었습니다.
DForck42

@ DForck42 : 제 경우에는 DB가 너무 커서 데이터를 스크립팅 할 수 없으므로 스키마를 스크립팅 한 다음로 데이터를 이동했습니다 bcp.
ivan_pozdeev

@ivan_pozdeev SQL Server 2012 BCP를 사용하여 내보내고 SQL Server 2008R2 BCP를 사용하여 가져 왔다는 말입니까? 파일 형식이 호환 가능한지 확인하십시오.
Chris

2
@Chris msdn.microsoft.com/en-us/library/ms162802.aspx "SQL Server 2014에서 bcp 유틸리티는 SQL Server 2000, SQL Server 2005, SQL Server 2008, SQL Server 2008 R2 및 SQL Server 2012. "
ivan_pozdeev

@ivan_posdeev에게 감사합니다. 이것은 계시였습니다. 다른 사람을 도울 수 있도록 아래 단계를 문서화 했습니다.
Chris

6

호환성 수준 설정은 SQL Server에서 특정 새 기능을 처리하는 방법을 결정하는 데 사용됩니다. 이런 식으로 응용 프로그램에 문제가 없어도 DB를 최신 버전의 SQL로 마이그레이션 할 수 있습니다. 호환성 수준은 앞뒤로 변경 될 수 있습니다.

불행히도 백업 파일은 이전 버전과 호환되지 않습니다. 한 가지 방법은 가져 오기 / 내보내기를 사용하여 현재 DB에서 이전 버전 인스턴스로 데이터를 이동하는 것입니다.


3

SQL 마이그레이션의 경우 무료 및 오픈 소스 SQL 데이터베이스 마이그레이션 마법사를 사용하십시오.

나는 ~ 1 천만 개의 레코드가있는 5GB 데이터베이스를 가지고 Generate Script를 통해 경로를 시도하고 sqlcmd.exe로 실행했습니다. 우선, 생성 된 스크립트가 항상 올바르게 작동하지는 않았습니다. 둘째, sqlcmd.exe는 사용 가능한 메모리에 대해 불평하면서 대용량 파일에서도 실패 할 수 있습니다. osql.exe는 작동하지만 오래 걸리며 동일한 명령 줄 인수를 갖습니다.

그런 다음 SQL Server를 SQL Azure 데이터베이스로 마이그레이션하기위한 훌륭한 도구를 발견했습니다. 예를 들어 SQL 2012 데이터베이스를 2008 R2로 마이그레이션하려는 경우 SQL Server에서 SQL Server로도 작동합니다. 대량 복사를 사용하는 bcp.exe를 사용합니다. 사용 가능한 GUI 및 명령 줄 (배치) 버전이 있으며 오픈 소스입니다. http://sqlazuremw.codeplex.com/을 참조 하십시오 . 제 경우에는 16 분이 걸렸습니다.

고급 화면에서 대상이 SQL Azure가 아니라 SQL Server임을 선택할 수 있습니다.


2

BCP가 이전 버전의 SQL Server로 데이터를 가져오고 RDS에서 데이터를 가져 오는 데 일부 도구보다 더 효과적인 것으로 나타났습니다. (감사합니다 @ivan_posdeev.)

먼저 SQL Server Management Studio, 작업, 스크립트 생성에서 데이터베이스를 마우스 오른쪽 단추로 클릭하여 스키마를 생성합니다. 고급 객체에서 모든 객체를 체크하고 필요한 모든 것이 스크립팅되도록합니다 (통계, 인덱스 등). 대상 데이터베이스의 이름이 다른 경우 "데이터베이스 사용"을 선택 취소하고 대상 데이터베이스 버전과의 호환성을 설정하고 스키마를 생성하는 파일입니다. 목적지에 데이터베이스를 만들고 (사용하여이 파일을 실행 osql, sqlcmd또는 GUI)를.

데이터를 이동하려면 다음 쿼리를 실행 두 번소스 먼저 목적지에 실행 가져 오기 배치 파일을 생성하는 첫 번째 열을 주석, 추출 데이터에 배치 파일을 생성 할 수있는 두 번째 열을 주석, 데이터베이스. 소스 및 대상 서버, 인스턴스 이름, 출력 및 입력 파일 디렉토리, 사용자 이름 및 비밀번호를 추가해야합니다. 통합 보안을 사용하려면 -U-P옵션을로 대체하십시오 -T.

유니 코드를 지원합니다. 필요하지 않으면 -N두 명령문 의 스위치를로 변경하십시오 -n.

SELECT 
   'bcp SOURCEDATABASE.' + s.Name + '.' + t.NAME  + ' out d:\dbdump\' + s.Name + '.' + t.NAME  + '.dat -N -S SOURCESERVER\INSTANCE -UUSER -PPASSWORD'
--    'bcp DESTINATIONDATASE.' + s.Name + '.' + t.NAME  + ' in d:\dbdump\' + s.Name + '.' + t.NAME  + '.dat -N -S DESTINATIONSERVER\INSTANCE -UUSER -PPASSWORD -E -h TABLOCK -b 1000 -e d:\dbdump\' + s.Name + '.' + t.NAME  + '.ERRORS.dat'
FROM 
    sys.tables t
INNER JOIN      
    sys.indexes i ON t.OBJECT_ID = i.object_id
LEFT OUTER JOIN 
    sys.schemas s ON t.schema_id = s.schema_id
ORDER BY 
    s.Name, t.NAME

schema.tablename.ERRORS.dat라는 이름의 검사 파일을 실행 한 후 실패한 행이 포함됩니다 (없는 경우 비어 있음).

BCP에 대한 MSDN 참조는 여기 , BCP 옵션에 대한 보다 자세한 설명은 여기를 참조 하십시오 .

나는 이것이 스크립트 생성과 내가 시도한 도구보다 훨씬 우수하다는 것을 알았습니다. 또한 백업을 허용하지 않는 RDS 데이터베이스에서도 실행됩니다. 생성 된 데이터 파일은 SQL 스크립트 크기의 30 %이며, 실행하는 데 약간의 시간이 걸리며 훨씬 안정적입니다. (데이터 스크립팅을 위해 SQL Server가 생성 한 스크립트는 항상 트립 되었으나 때로는 예측할 수없는 경우도 있음) 생성 된 SQL이 2008R2와 호환되지 않았습니다 (예 : used nvarchar(0), 종종 알 수없는 이유로 완료되지 않았습니다). BCP는 제약 조건 위반도 복제합니다. 참조 무결성과 같은).

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