使用 Always Encrypted 與 [SQL Server 匯入和匯出精靈] 將資料移轉到資料行或從中移轉
適用於:SQL Server Azure SQL 資料庫 Azure SQL 受控執行個體
SQL Server 匯入和匯出精靈是一種工具,可讓您將資料從來源複製到目的地。 本文件描述在來源和/或目的地為 SQL Server 資料庫,且該資料庫包含以 Always Encrypted 保護的資料行時,如何使用 [SQL Server 匯入和匯出精靈]。
移轉案例
透過 [SQL Server 匯入和匯出精靈],您可以實作下列案例,將資料移轉到加密資料行或從中移轉出。
在移轉時加密純文字資料
如果您的資料來源包含純文字資料,而您的目的地是包含加密資料行的 SQL Server 資料庫,您可以使用 [SQL Server 匯入和匯出精靈] 來擷取來源的純文字資料,將其加密並將加密資料 (加密文字) 複製到目的地資料庫中的加密資料行。 在此移轉案例中,資料來源可以是 [SQL Server 匯入和匯出精靈] 支援的任何資料存放區。 例如,檔案、SQL Server 資料庫或另一個資料庫系統中的資料庫。
若要確保 [SQL Server 匯入和匯出精靈] 可以加密資料,您必須為目的地資料庫連接啟用 Always Encrypted,且必須能夠存取可保護目的地資料庫資料行資料的金鑰。 如需詳細資訊,請參閱針對資料庫連接啟用和停用 Always Encrypted 和在移轉期間加密或解密資料的權限。
在移轉時解密加密資料
如果您要移轉 SQL Server 資料庫的已加密資料庫資料行中所儲存資料,您可以設定 [SQL Server 匯入和匯出精靈] 來解密資料,並將解密的 (純文字) 資料複製到目的地,這可以是 [SQL Server匯入和匯出精靈] 支援的任何資料存放區,例如檔案、SQL Server 資料庫或另一個資料庫系統中的資料庫。
若要確保 [SQL Server 匯入和匯出精靈] 可以解密資料,您必須為來源資料庫連接啟用 Always Encrypted,且必須能夠存取可保護來源資料庫資料行資料的金鑰。 如需詳細資訊,請參閱針對資料庫連接啟用和停用 Always Encrypted 和在移轉期間加密或解密資料的權限。
在移轉時重新加密資料
如果您要從來源 SQL Server 資料庫中的加密資料行,將資料複製到相同或另一個 SQL Server 資料庫中的加密資料行,您可以設定 [SQL Server 匯入和匯出精靈],以便在從來源擷取資料之後將其解密,並在插入目的地資料庫中的加密資料行之前將其重新加密。 如果目標資料行的結構描述 (例如,資料行資料類型、加密類型和資料行加密金鑰) 與來源資料行的結構描述不同,請使用這個方法。
若要確保 [SQL Server 匯入和匯出精靈] 可以加密及解密資料,您必須為來源資料庫連接與目的地資料庫連接啟用 Always Encrypted,且必須能夠存取可保護來源和目標資料庫資料行資料的金鑰。 如需詳細資訊,請參閱針對資料庫連接啟用和停用 Always Encrypted 和在移轉期間加密或解密資料的權限。
在移轉期間讓資料保持加密
如果您要從來源 SQL Server 資料庫中的加密資料行,將資料複製到相同或另一個 SQL Server 資料庫中的加密資料行,且目標資料行使用與來源資料行完全相符的結構描述 (包括相同的資料類型、加密類型和資料行加密金鑰) 時,您可以設定 [SQL Server 匯入和匯出精靈] 來擷取來源資料行中的加密文字,並將加密資料 (加密文字) 插入目標 SQL Server 資料庫中的加密資料行。
在此案例中,您可以使用支援 SQL Server 的任何資料提供者,以連線到來源或目的地 SQL Server 資料庫。 如果您使用支援 Always Encrypted 來連線到目的地資料庫的提供者,則必須確定已針對資料庫連接停用 Always Encrypted。 如需詳細資訊,請參閱針對資料庫連接啟用和停用 Always Encrypted。
您還必須確定已設定 [SQL Server 匯入和匯出精靈] 用來連線到目的地資料庫的資料庫主體 (使用者),並將 ALLOW_ENCRYPTED_VALUE_MODIFICATIONS
選項設為 ON
。 此選項會在大量複製作業中抑制伺服器上的密碼編譯中繼資料檢查,讓精靈不需解密資料就能在目的地資料庫中大量插入加密資料。 如需詳細資訊,請參閱將加密資料大量載入 Always Encrypted 所保護的資料行。
針對資料庫連接啟用和停用 Always Encrypted
如果您的移轉案例需要 [SQL Server 匯入和匯出精靈] 能夠加密和/或解密資料,您必須使用支援 Always Encrypted 的資料提供者來設定來源 SQL Server 資料庫連接和/或目的地 SQL Server 資料庫連接。 您還必須針對來源和/或目的地資料庫連接啟用 Always Encrypted。
如果您不需要此精靈來加密或解密該連線上的資料,則可以使用任何資料提供者進行連線。
[SQL Server 匯入和匯出精靈] 中的下列資料提供者支援 Always Encrypted。
- .NET Framework Data Provider for SQL Server
- 請確定執行精靈的電腦使用 .NET Framework 4.6.1 或更新版本。
- 若要針對連線啟用 Always Encrypted,請將連線屬性中的
Column Encryption Setting
設定為Enabled
。 若要停用 Always Encrypted,請將Column Encryption Setting
設定為Disabled
。 如需詳細資訊,請參閱使用 .NET Framework Data Provider for SQL Server 連接到 SQL Server 和針對應用程式查詢啟用 Always Encrypted。
- .NET Framework Data Provider for ODBC。
- 安裝 Microsoft ODBC Driver 13.1 或更新版本。
- 若要針對連線啟用 Always Encrypted,請將連線屬性中的
Column Encryption
設定為Enabled
。 若要停用 Always Encrypted,請將Column Encryption
設定為Disabled
。 如需詳細資訊,請參閱使用 ODBC Driver for SQL Server 連線到 SQL Server 和在 ODBC 應用程式中啟用 Always Encrypted。
- 若要針對連線啟用 Always Encrypted,請將連線屬性中的
- 安裝 Microsoft ODBC Driver 13.1 或更新版本。
在移轉期間加密或解密資料的權限
若要加密或解密 SQL Server 來源或目的地資料庫中所儲存的資料,您需要具有來源資料庫的 VIEW ANY COLUMN MASTER KEY DEFINITION 和 VIEW ANY COLUMN ENCRYPTION KEY DEFINITION 權限。 您也需要金鑰存放區權限,才能存取及使用您的資料行主要金鑰。 如需金鑰管理作業所需金鑰存放區權限的相關詳細資訊,請移至建立及儲存 Always Encrypted 的資料行主要金鑰,並尋找與您的金鑰存放區相關的區段。