我知道之前有人问过这个问题,但我看不到任何答案,因此再次发布。
作为 PS(ver 4.0) importbacpac 的一部分,我间歇性地遇到以下错误 使用“2”参数调用“ImportBacPac”的异常:“无法导入包。” 例外是“无效操作”。这台机器有 sql 2014 并且 bacpac 仅在 sql 2014 上导出,所以没有不匹配的方式,我们使用 windows 身份验证进行导入。问题是错误并不一致,并且仅有时会发生。知道这里会发生什么吗?
添加代码
function Perform-Restore([string]$DbName, [string]$connectionString, [string]$sqlserverVersion, [string]$bacpacFilePath)
{
Load-DacFx -sqlserverVersion $sqlserverVersion
$dacServiceInstance = new-object Microsoft.SqlServer.Dac.DacServices ($connectionString)
$bacpacPackageInstance = [Microsoft.SqlServer.Dac.BacPackage]::Load($bacpacFilePath)
try
{
**$dacServiceInstance.ImportBacpac($bacpacPackageInstance, $DbName)**
}
catch
{
Throw "Restore Failed"
}
}
function Load-DacFx([string]$sqlserverVersion)
{
$majorVersion = Get-SqlServerMajoreVersion -sqlServerVersion $sqlserverVersion
$DacFxLocation = "${env:ProgramFiles(x86)}\Microsoft SQL Server\$majorVersion\DAC\bin\Microsoft.SqlServer.Dac.dll"
try
{
[System.Reflection.Assembly]::LoadFrom($DacFxLocation) | Out-Null
}
catch
{
Throw "$LocalizedData.DacFxInstallationError"
}
}