是否可以使用 Microsoft.Sqlserver.Management.Smo 发布 dacpac 文件?

Is it possible to publish a dacpac file using Microsoft.Sqlserver.Management.Smo?

我环顾四周,但找不到任何东西。我无权访问

Microsoft.SqlServer.Dac

,不幸的是,由于权限原因,我无法将其下载到我正在使用的机器上。

EDIT 还应该提到我是 运行 VS 2012 with SP4 和 SQL Server 2008。我安装的 VS 已经安装了 SSDT,但是对于由于某种原因 Microsoft.SqlServer.Dac DLL 未安装。

如果您不能 运行 安装程序(或者您甚至不能这样做?

,您可以复制 dll。

您还可以 运行 从另一台机器进行部署,方法是针对数据库生成部署脚本或对其进行离线备份。

埃德

您可以使用带有 powershell 的 SMO 发布 DacPac,下面是 documentation.

中示例的副本
## Set a SMO Server object to the default instance on the local computer.  
CD SQLSERVER:\SQL\localhost\DEFAULT  
$srv = get-item .  

## Open a Common.ServerConnection to the same instance.  
$serverconnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($srv.ConnectionContext.SqlConnectionObject)  
$serverconnection.Connect()  
$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverconnection)  

## Load the DAC package file.  
$dacpacPath = "C:\MyDACs\MyApplication.dacpac"  
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)  
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)  

## Subscribe to the DAC deployment events.  
$dacstore.add_DacActionStarted({Write-Host `n`nStarting at $(get-date) :: $_.Description})  
$dacstore.add_DacActionFinished({Write-Host Completed at $(get-date) :: $_.Description})  

## Deploy the DAC and create the database.  
$dacName  = "MyApplication"  
$evaluateTSPolicy = $true  
$deployProperties = New-Object Microsoft.SqlServer.Management.Dac.DatabaseDeploymentProperties($serverconnection,$dacName)  
$dacstore.Install($dacType, $deployProperties, $evaluateTSPolicy)  
$fileStream.Close()