我正在尝试使用 Azure Data Studio 和 Azure SQL 迁移实例将本地 SQL 数据库迁移到 Azure SQL 数据库。但是,对于包含加密数据的表(使用始终加密功能),迁移会失败。
采取的步骤:
问题: 迁移失败,遇到以下错误:
故障发生在“Sink”侧。 ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=数据库操作失败。请搜索错误以获取更多详细信息。,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=来自 bcp 客户端的 colid 3 的列类型无效。,Source=.Net SqlClient Data提供程序,SqlErrorNumber=4816,Class=16,ErrorCode=-2146232060,State=4,Errors=[{Class=16,Number=4816,State=4,Message=来自 bcp 客户端的 colid 3 的列类型无效。,}, ],'
如何修复此错误?
故障发生在“Sink”侧。 ErrorCode=SqlOperationFailed,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=数据库操作失败。请搜索错误以获取更多详细信息。,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Data.SqlClient.SqlException,Message=来自 bcp 客户端的 colid 3 的列类型无效。,Source=.Net SqlClient Data提供程序,SqlErrorNumber=4816,Class=16,ErrorCode=-2146232060,State=4,Errors=[{Class=16,Number=4816,State=4,Message=来自 bcp 客户端的 colid 3 的列类型无效。,}, ],'
您正在尝试将包含加密数据的表(使用始终加密功能)从本地迁移到 Azure SQL 数据库。但无法使用 Azure Data Studio 中当前形式的 Azure SQL 迁移扩展来迁移始终加密列,这可能是出现上述错误的原因。要解决上述错误,您可以使用导入导出向导工具。
要在批量复制操作期间加载加密数据而不在服务器上执行元数据检查,请使用此处所示的 ALLOW_ENCRYPTED_VALUE_MODIFICATIONS 选项创建用户。
欲了解更多信息,您可以参考 MS Q&A 门户中的类似帖子。