Powershell 术语';Microsoft.SqlServer.Dac.BacPackage::Load';不被承认

Powershell 术语';Microsoft.SqlServer.Dac.BacPackage::Load';不被承认,powershell,azure-sql-database,sql-server-2016,Powershell,Azure Sql Database,Sql Server 2016,我已经从一个azure sql db创建了一个bacpac,将它复制到blob,从blob将它带到本地 我在powershell中运行此代码 Add-Type -path "C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\Microsoft.SqlServer.Dac.dll" $restoredDatabaseName = 'AuditTest' $bacpacFile = "H:\backup\audit\audit.bacpa

我已经从一个azure sql db创建了一个bacpac,将它复制到blob,从blob将它带到本地

我在powershell中运行此代码

Add-Type -path "C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\Microsoft.SqlServer.Dac.dll"
$restoredDatabaseName = 'AuditTest'
$bacpacFile = "H:\backup\audit\audit.bacpac"
$conn = "Data Source=.;Initial Catalog=master;Connection Timeout=0;Integrated Security=True;"

$importBac = New-Object Microsoft.SqlServer.Dac.DacServices $conn
$loadBac = Microsoft.SqlServer.Dac.BacPackage::Load($bacpacFile)
$importBac.ImportBacpac($loadBac, $restoredDatabaseName)

#Clean up
$loadBac.Dispose()
返回此错误:

Microsoft.SqlServer.Dac.BacPackage::Load : The term 'Microsoft.SqlServer.Dac.BacPackage::Load' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the 
name, or if a path was included, verify that the path is correct and try again.
我还尝试使用导入数据层向导,并得到以下错误

Could not load file or assembly 'Microsoft.SqlServer.Dac, Version=13.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. (Microsoft.SqlServer.Management.Dac.DacWizard)
这让我快发疯了,我发现了一些关于注册表黑客的东西,比如向导错误,对powershell一点帮助都没有

SQL Azure DB PRS1
在Azure VM中还原到SQL 2016。

调用静态方法时,完整类型名称放在方括号中

因此,我们应该:

Add-Type -path "C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin\Microsoft.SqlServer.Dac.dll"
$restoredDatabaseName = 'AuditTest'
$bacpacFile = "H:\backup\audit\audit.bacpac"
$conn = "Data Source=.;Initial Catalog=master;Connection Timeout=0;Integrated Security=True;"

$importBac = New-Object Microsoft.SqlServer.Dac.DacServices $conn
$loadBac = [Microsoft.SqlServer.Dac.BacPackage]::Load($bacpacFile)
$importBac.ImportBacpac($loadBac, $restoredDatabaseName)

#Clean up
$loadBac.Dispose()

非常感谢,我是powershell的新手,只是在复制我在网上找到的示例。现在试一试,它似乎还没有失败。它是有效的。太神了