gpt4 book ai didi

sql-server - 用于 DACPAC 部署的 SQL Azure 和 Powershell

转载 作者:行者123 更新时间:2023-12-02 09:37:48 29 4
gpt4 key购买 nike

我正在使用 powershell 将基于 Visual Studio 2012 构建的 dacpac 部署到 SQL Azure,并遇到了我认为可能与某些版本不兼容有关的问题。当我从 Visual Studio 中发布时,发布工作正常,但当我使用 powershell 时,发布会抛出异常。

这是我在 Powershell 中所做的事情

[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Management.Sdk.Sfc, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.ConnectionInfo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null
[System.Reflection.Assembly]::Load("Microsoft.SqlServer.Management.Dac, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91") | out-null

Trap
{
PrintException($_.Exception);
$fileStream.Close()
return;
}

$sqlServerFullName = $sqlServerName + ".database.windows.net"
$serverConnection = New-Object Microsoft.SqlServer.Management.Common.ServerConnection($sqlServerFullName, $adminLogin, $admingPwd)
$serverconnection.Connect()

$dacstore = New-Object Microsoft.SqlServer.Management.Dac.DacStore($serverConnection)
$fileStream = [System.IO.File]::Open($dacpacPath,[System.IO.FileMode]::OpenOrCreate)

Write-Host "Reading contents from $dacpacPath..."
$dacType = [Microsoft.SqlServer.Management.Dac.DacType]::Load($fileStream)

上面代码中的最后一行是因以下错误(内部异常值)而崩溃并且不再继续进行的内容

The stream cannot be read to construct the DacType.

There is an error in XML document (2, 2).

<DacType xmlns='http://schemas.microsoft.com/sqlserver/dac/Serialization/2012/0
2'> was not expected.

这是我正在使用的 powershell ISE 中的 $PSVersionTable

Name                           Value                                           
---- -----
PSVersion 2.0
PSCompatibleVersions {1.0, 2.0}
BuildVersion 6.1.7601.17514
CLRVersion 4.0.30319.17929
WSManStackVersion 2.0
PSRemotingProtocolVersion 2.1
SerializationVersion 1.1.0.1

想知道当我使用 Powershell 部署时可能会导致此问题,而当我使用 Visual Studio 2012 部署它时它工作正常

附注- 使用与我在互联网上找到的 dacpac 文件相同的脚本,powershell 部署工作正常,该文件显然是针对 SQL 2005 版本的

最佳答案

如果您安装了最新的 SSDT 2015 ( https://msdn.microsoft.com/en-us/mt186501 )。我强烈推荐它,因为它有很多有用的发布配置文件选项,可以使用 Visual Studio 生成。

您可以使用以下命令通过 Powershell 将文件发布到 Azure

$sqlpackage = "C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\120\sqlpackage.exe"

$dbserver = "<Azure DB Location>"
$database = "<name of DB on Server>"

# UNC Paths

$dbProfile = "<Path to your Publish Profile>"
$mydacpac = "<location of the dacpac>"

# Publish Command

& $sqlpackage /Action:Publish /tsn:$dbServer /tdn:$database /sf:$mydacpac/pr:$dbProfile /variables:myVariable=1

PS : & 与 Pradebban 提到的 Invoke-Expression 类似

关于sql-server - 用于 DACPAC 部署的 SQL Azure 和 Powershell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631941/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com