是否可以使用 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()
我环顾四周,但找不到任何东西。我无权访问
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()