3

我刚刚将.bacpac文件还原到本地 SQL 服务器实例(64b v12.0.4213),备份来自 azure sql 实例。

它失败了几次,出现 OOM 异常。我关闭了我机器上的所有东西,在还原结束时,SQL 服务器服务实例从一个 700MB 的文件中消耗了 13GB 的内存!

恢复幸运地完成了,但似乎内存没有被释放/垃圾收集。在我写这篇文章时,它仍然是 12GB。

这是一个已知问题吗?有什么方法可以恢复.bacpac并选择要忽略的表?您可以通过正常的数据恢复来做到这一点,最令人反感的表是 dbo.[Logs] 表,obvs。

4

3 回答 3

4

我遇到过同样的问题; 修改服务器可用的内存没有影响。

对我来说,解决方案是使用命令行 (PowerShell) 来执行导入。

[string]$myBacpac = 'c:\temp\myBacpac123.bacpac'
[string]$connectionString = 'Data Source=.;Initial Catalog=MyNewCatalog; Integrated Security=true;'
[string]$action = 'Import'

[string[]]$commandParameters = @(
    "/Action:`"$action`"" 
    "/SourceFile:`"$myBacpac`"" 
    "/TargetConnectionString:`"$connectionString`""
)
[string]$LatestSqlPackage = Get-Item 'C:\*\Microsoft SQL Server\*\DAC\bin\sqlpackage.exe' | %{get-command $_}| sort version -Descending | select -ExpandProperty source -First 1
if ($LatestSqlPackage) {
    Write-Verbose "Found: $LatestSqlPackage" 
    & $LatestSqlPackage $commandParameters
} else {
    Write-Error "Could not find SqlPackage.exe"
}

在我第一次尝试时,我收到了一个关于不支持的模型版本的错误:

正在导入服务器“.”上的数据库“MyNewCatalog”。创建部署计划初始化部署 SqlPackage.exe:* 导入数据库时​​出错:无法从包中读取架构模型头信息。在 line:1 char:1 + & $sqlPackage /Action:Import /SourceFile:"c:\temp\myBacpac123.bacpac" /T ... + ~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~ + CategoryInfo : NotSpecified: (* Error impor...n from package.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError 不支持模型版本“3.5”。

对于那个错误,我遵循了这里的指导:https ://stackoverflow.com/a/40541210/361842 ;即安装Microsoft SQL Server Data-Tier Application Framework (16.4)。重新运行时一切都成功了。

于 2018-08-02T20:10:53.807 回答
2

要配置 SQL Server 的内存使用,打开 SQL Server Management Studio,连接到服务器,在对象资源管理器窗口中右键单击服务器,单击属性,然后单击服务器属性窗口的内存选项卡。

至于 bacpac,您无法在导入操作期间选择要恢复哪些表,但您可以选择导出哪些表。您可以使用 SqlPackage.exe 的导出命令和 /p:TableData 参数来指定哪些表应该包含在 bacpac 中。不幸的是,没有办法只指定应该排除哪些表。=^/

SqlPackage.exe 文档可在此处获得:https ://msdn.microsoft.com/en-us/hh550080(v=vs.103).aspx

于 2016-01-07T18:27:44.327 回答
0

其他答案都对我不起作用,起作用的是关闭并重新启动 SSMS。这听起来像是一个愚蠢的建议,但我之前一直在运行一些大型查询,这些查询肯定会导致内存问题。

于 2018-10-19T19:37:43.137 回答