2012-12-17 12 views
1

我的工作實現自動化的SSDT項目的腳本,以便它可以在以後用其他值來部署變量傳遞英寸註釋掉集瓦爾聲明中的錯誤真實結果從MS建立

我發佈配置長相喜歡這個。

<?xml version="1.0" encoding="utf-8"?> 
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <IncludeCompositeObjects>True</IncludeCompositeObjects> 
    <TargetConnectionString>Data Source=.;Integrated Security=True;Pooling=False</TargetConnectionString> 
    <TargetDatabaseName>BLANK</TargetDatabaseName> 
    <UpdateDatabase>False</UpdateDatabase> 
    <ScriptDatabaseOptions>True</ScriptDatabaseOptions> 
    <BlockOnPossibleDataLoss>True</BlockOnPossibleDataLoss> 
    <CreateNewDatabase>True</CreateNewDatabase> 
    <IgnoreObjectPlacementOnPartitionScheme>False</IgnoreObjectPlacementOnPartitionScheme> 
    <ProfileVersionNumber>1</ProfileVersionNumber> 
    <CommentOutSetVarDeclarations>True</CommentOutSetVarDeclarations> 
    </PropertyGroup> 
</Project> 

在我的測試腳本,我然後調用從PowerShell中

以下
$Directory = 'C:\GitProjects\CI\DevPOC\Database\ETL POC\AdventureWorksDW\' 
$Publish = 'AdventureWorksDW.publish.xml' 

Set-Location $Directory 
& $env:windir\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Build 
& $env:windir\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Publish /p:SqlPublishProfilePath`="$Directory\$Publish" 

然後我得到了一些錯誤,所有涉及到的變量值,下面的例子中。

Deploy error SQL72014: SQL Execution error: A fatal error occurred. The variable DatabaseName could not be found. [C:\GitProjects\CI\POC\Database\ETL POC\AdventureWorksDW\AdventureWorksDW.sqlproj] 

但是,如果我將CommentOutSetVarDeclarations設置爲false,則會生成無錯誤的腳本。當通過SSDT執行相同的任務時,不會引發錯誤。

有沒有人遇到類似的行爲?

回答

2

因此,經過微軟的支持後,我有一個解決這個問題的決議。看來在發佈配置文件中設置的參數UpdateDatabase沒有被拾取並以這種方式使用。不是100%確定這是否被認爲是一個錯誤,而是通過使用下面的命令來代替,它工作正常。

& $env:windir\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe /t:Publish /p:SqlPublishProfilePath`="$Directory\$Publish" /p:UpdateDatabase=False