適用対象:SQL Server
Azure SQL Database
Azure SQL Managed Instance
この記事では、Always Encrypted で保護された列を含むデータベースをエクスポートおよびインポートする方法について説明します。
データベースをエクスポートすると、暗号化された列に格納されているすべてのデータが暗号化された形式 (ciphertext) でデータベースから取得され、結果として生成された BACPAC に入れられます。 生成された BACPAC には、Always Encrypted キーのメタデータも含まれます。
BACPAC をデータベースにインポートすると、BACPAC からの暗号化されたデータがデータベースに読み込まれ、Always Encrypted キーのメタデータが再び作成されます。
ソース データベース (エクスポートしたデータベース) に格納されている暗号化された列にクエリを実行するように構成されたアプリケーションがある場合、特別なことをしなくても、そのアプリケーションでターゲット データベース内の暗号化されたデータに対してクエリを実行することができます。これは両方のデータベースのキーが同じであるためです。
データベースのエクスポートおよびインポート方法の詳細については、以下をご覧ください。
- BACPAC ファイルをエクスポートする
- BACPAC ファイルをインポートして新しいデータベース を作成する
- Azure SQL データベースを BACPAC ファイルにエクスポートする
- BACPAC ファイルを Azure SQL Database のデータベースにインポートする
- SqlPackage
暗号化された列を含むデータベースを移行するためのアクセス許可
次のアクセス許可が必要です。
ALTER ANY COLUMN MASTER KEYとALTER ANY COLUMN ENCRYPTION KEYをソースデータベースに使用します。ALTER ANY COLUMN MASTER KEY、ALTER ANY COLUMN ENCRYPTION KEY、VIEW ANY COLUMN MASTER KEY DEFINITION、およびVIEW ANY COLUMN ENCRYPTION DEFINITIONはターゲット データベース上にあります。
データはエクスポートおよびインポート操作中も暗号化された状態を維持するため、暗号化された列用に構成された列マスター キーにアクセスする必要はありません。