问题描述
我正在尝试每天从Azure sql数据库(弹性池)还原到托管实例。我尝试导出和导入bacpac文件,但失败并出现以下错误:
标题:Microsoft sql Server Management Studio
无法导入包。
警告sql72012:对象[XTP]存在于目标中,但是即使选中了“为目标数据库中的对象而不是源中的对象生成放置语句”复选框,也不会删除该对象。
警告sql72012:对象[XTP]存在于目标中,但是即使选中了“为目标数据库中的对象而不是源中的对象生成放置语句”复选框,也不会删除该对象。
警告sql72012:对象[data_0]存在于目标中,但是即使选中了“为目标数据库中的对象而不是源中的对象生成放置语句”复选框,也不会删除该对象。
警告sql72012:对象[log]存在于目标中,但是即使选中了“为目标数据库中的对象而不是源中的对象生成放置语句”复选框,也不会删除该对象。
错误sql72014:.Net sqlClient数据提供程序:消息102,级别16,状态30,行1“类型”附近的语法不正确。
错误sql72045:脚本执行错误。执行的脚本:CREATE USER [**************] WITH SID = 0x6B6F4FABE3FFA848BAFB6C956D9A7E9C,TYPE = E;
我还尝试过使用自动化帐户执行Powershell,但似乎也不支持托管实例。
解决方法
恭喜您成功了!
- 创建数据库的副本
- 在导出之前从数据库中删除所有AAD用户
这可能对其他社区成员有益。谢谢。
,您还可以做的是:
-
将 .bacpac 文件重命名为 .zip 并解压
-
转到 model.xml 文件并找到所有类似于以下内容的条目:
a) <Element Type="SqlRoleMembership"> b) <Element Type="SqlUser" Name=" c) <Element Type="SqlLogin" Name=" d) <Element Type="SqlExternalDataSource"
-
之后保存model.xml并运行这个powershell:
$modelXmlPath = Read-Host“model.xml 的路径” $hasher =[System.Security.Cryptography.HashAlgorithm]::Create("System.Security.Cryptography.SHA256CryptoServiceProvider") $fileStream = new-object System.IO.FileStream ` -ArgumentList @($modelXmlPath,[System.IO.FileMode]::Open) $hash = $hasher.ComputeHash($fileStream) $hashString = "" Foreach ($b in $hash) { $hashString += $b.ToString("X2") } $fileStream.Close() $hashString
-
取散列并替换 Origin.Xml 中的实际校验和值
-
再次压缩所有内容并导入任何地方(几乎)
请找到参考条目:
Error Importing Azure bacpac file to local db error incorrect syntax near EXTERNAL