SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Enterprise Edition の DB バックアップを Standard Edition にリストア

leave a comment

SQL Server 2014 の環境でテストをしていますが、基本的には 2005 から同様な動作だったはずです。

エディションの違いによる機能比較はこちらを。

SQL Server の移行時に、Enterprise Edition → Standard Edition に変更したいというニーズが稀にあります。
基本的にはユーザーデータベースのバックアップ / リストアにより移行作業を実施することになるかと思いますが、Enterprise と Standard Edition 間でバックアップをリストアするためには条件があります。

Enterprise Edition の DB に以下のテーブルを作成してみます。

<br />CREATE TABLE Table_1(Col1 int) <br />

このテーブルが格納されている DB については Standard Edition にリストアすることができます。

それでは、以下のテーブルが存在している場合にはどうなるでしょうか。

<br />CREATE TABLE Table_1(Col1 int) WITH (DATA_COMPRESSION=PAGE) <br />

Standard Edition ではデータ圧縮はサポートしていません。

そのため、上記のテーブルが含まれている場合、バックアップをリストアした際にエラーとなります。

メッセージ 3013、レベル 16、状態 1、行 2

RESTORE DATABASE が異常終了しています。

メッセージ 909、レベル 21、状態 1、行 2

データベース ‘EnterpriseDB’ は、オブジェクト ‘Table_1’ の一部または全体でデータ圧縮または vardecimal ストレージ形式が有効になっているため、このエディションの SQL Server では開けません。データ圧縮および vardecimal ストレージ形式がサポートされているのは、SQL Server Enterprise Edition だけです。

メッセージ 933、レベル 21、状態 1、行 2

SQL Server の現在のエディションではデータベース機能の一部が使用できないため、データベース ‘EnterpriseDB’ を開くことができません。

Enterprise Edition の DB を Standard Edition にリストアすることは可能 (Standard → Enterprise も可能) ですが、Standard Edition は Enterprise Editoin と比較して、一部の機能を利用することができません。

そのため、Standard Edition で使用できない機能を利用している場合には、Enterprise Edition にリストアをすることはできません。

Enterprise Edition の機能を使用していない場合にはリストアをすることができますので、利用している機能を把握できていれば、相互でデータベースをリストアすることが可能です。

SQL Server 2008 以降であれば、sys.dm_db_persisted_sku_features で DB 単位で Enterprise Edition のどの機能を使用しているかを確認することができます。
どの機能を使用しているかはこの DMV から確認するとよいかと。
image

Share

Written by Masayuki.Ozawa

12月 24th, 2014 at 10:03 am

Posted in SQL Server

Tagged with

Leave a Reply