bacpac 还原到 SQL 服务器的内存使用情况
Memory usage for bacpac restore to SQL server
我刚刚将 .bacpac
文件恢复到本地 SQL 服务器实例 (64b v12.0.4213),备份来自 azure sql 实例。
由于 OOM 异常失败了几次。我关闭了我机器上的所有东西,在恢复结束时,SQL 服务器服务实例从一个 700MB 的文件中消耗了 13GB 的内存!
幸运的是恢复完成了,但似乎内存没有被释放up/garbage收集。在我写这篇文章时它仍然是 12GB。
这是一个已知问题吗?有什么办法可以恢复 .bacpac
和 select 一个 table 来忽略吗?您可以通过正常的数据恢复来执行此操作,最令人反感的 table 是 dbo。[Logs] table,obvs。
要配置 SQL 服务器对内存的使用,请打开 SQL Server Management Studio,连接到服务器,right-click 在对象资源管理器 window 中的服务器上,单击属性,然后单击服务器属性的内存选项卡 window。
至于 bacpac,您无法 select 在导入操作期间恢复哪些表,但可以 select 导出哪些表。您可以将 SqlPackage.exe 的导出命令与 /p:TableData 参数一起使用,以指定应将哪些表包含在 bacpac 中。不幸的是,没有办法只指定应该排除哪些表。 =^/
SqlPackage.exe 文档可在此处获得:https://msdn.microsoft.com/en-us/hh550080(v=vs.103).aspx
我遇到了同样的问题;修改服务器可用内存没有影响。
我的解决方案是使用命令行 (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"
}
第一次尝试时,我收到有关不支持的模型版本的错误消息:
Importing to database 'MyNewCatalog' on server '.'. Creating deployment plan
Initializing deployment SqlPackage.exe : * Error importing
database:Could not read schema model header information from package.
At line:1 char:1
+ & $sqlPackage /Action:Import /SourceFile:"c:\temp\myBacpac123.bacpac" /T ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (* Error impor...n from package.:String) [], RemoteException
+ FullyQualifiedErrorId : NativeCommandError The model version '3.5' is not supported.
对于那个错误,我遵循了这里的指导:;即安装 Microsoft SQL Server Data-Tier Application Framework (16.4)
。重新运行一切成功。
其他答案都不适合我,有用的是关闭并重新启动 SSMS。这听起来像是一个愚蠢的建议,但我之前 运行 一些大型查询肯定会导致内存问题。
我刚刚将 .bacpac
文件恢复到本地 SQL 服务器实例 (64b v12.0.4213),备份来自 azure sql 实例。
由于 OOM 异常失败了几次。我关闭了我机器上的所有东西,在恢复结束时,SQL 服务器服务实例从一个 700MB 的文件中消耗了 13GB 的内存!
幸运的是恢复完成了,但似乎内存没有被释放up/garbage收集。在我写这篇文章时它仍然是 12GB。
这是一个已知问题吗?有什么办法可以恢复 .bacpac
和 select 一个 table 来忽略吗?您可以通过正常的数据恢复来执行此操作,最令人反感的 table 是 dbo。[Logs] table,obvs。
要配置 SQL 服务器对内存的使用,请打开 SQL Server Management Studio,连接到服务器,right-click 在对象资源管理器 window 中的服务器上,单击属性,然后单击服务器属性的内存选项卡 window。
至于 bacpac,您无法 select 在导入操作期间恢复哪些表,但可以 select 导出哪些表。您可以将 SqlPackage.exe 的导出命令与 /p:TableData 参数一起使用,以指定应将哪些表包含在 bacpac 中。不幸的是,没有办法只指定应该排除哪些表。 =^/
SqlPackage.exe 文档可在此处获得:https://msdn.microsoft.com/en-us/hh550080(v=vs.103).aspx
我遇到了同样的问题;修改服务器可用内存没有影响。
我的解决方案是使用命令行 (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"
}
第一次尝试时,我收到有关不支持的模型版本的错误消息:
Importing to database 'MyNewCatalog' on server '.'. Creating deployment plan Initializing deployment SqlPackage.exe : * Error importing database:Could not read schema model header information from package. At line:1 char:1 + & $sqlPackage /Action:Import /SourceFile:"c:\temp\myBacpac123.bacpac" /T ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (* Error impor...n from package.:String) [], RemoteException + FullyQualifiedErrorId : NativeCommandError The model version '3.5' is not supported.
对于那个错误,我遵循了这里的指导:;即安装 Microsoft SQL Server Data-Tier Application Framework (16.4)
。重新运行一切成功。
其他答案都不适合我,有用的是关闭并重新启动 SSMS。这听起来像是一个愚蠢的建议,但我之前 运行 一些大型查询肯定会导致内存问题。