PowerShell使用**DacServices**和SQLCMD变量来部署DACPAC

Jon*_*Jon 7 powershell sqlcmd dacpac sql-server-data-tools

在PowerShell中,我使用Microsoft.SqlServer.Dac.DacServices和Microsoft.SqlServer.Dac.DacDeployOptions来部署/更新数据库DACPAC.我遇到的问题是找到设置程序包所需的SQLCMD变量的位置.

缩写样本

# Create a DacServices object, which needs a connection string 
$dacsvcs = New-Object Microsoft.SqlServer.Dac.DacServices "server=$sqlserver"

# Load dacpac from file
$dp = [Microsoft.SqlServer.Dac.DacPackage]::Load($dacpac) 

# Deploy options
$deployOptions = New-Object Microsoft.SqlServer.Dac.DacDeployOptions
$deployOptions.IncludeCompositeObjects = $true
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用SqlPackage.exe输入这些内容,也许这就是我应该做的.但是在文档或Web浏览器中没有任何地方可以找到DacServices使用SQLCMD变量作为选项的示例 - SQLCMD变量作为我项目的DACPAC的必需参数.

Kev*_*ane 10

您应该在$ deployOptions.SqlCommandVariableValues属性中设置选项.这是一个updateabase字典 - 您无法分配新字典,但可以更新其中的键/值对.例如,将变量"MyDatabaseRef"设置为"Database123"使用

$deployOptions.SqlCommandVariableValues.Add("MyDatabaseRef", "Database123");
Run Code Online (Sandbox Code Playgroud)

API参考在这里.

  • @KevinCunnane,在SqlCommandVariablesValues上使用Add方法对我有用,所以这样的事情应该这样做:$ deployOptions.SqlCmdVariableValues.Add("MyDatabaseRef","Database123") (2认同)