2017-05-04 31 views
0

我們與這取決於我是否使用會產生不同的變化腳本發佈配置一個Visual Studio數據庫項目Visual Studio的生成腳本在命令行選項或SQL包:爲什麼SqlPackage腳本操作和VisualStudio生成腳本會產生不同的結果?

  • Visual Studio中創建了一個10455 KB文件。
  • SqlPackage使用以下命令創建一個8,835KB文件:SqlPackage /a:Script /sf:pub.dacpac /pr:pub.profile.xml

如何遵守命令行VS用來生成其腳本有什麼建議?任何想法當這兩個進程使用以下發布配置文件時可能會有什麼不同?

<?xml version="1.0" encoding="utf-8"?> 
<Project ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <IncludeCompositeObjects>True</IncludeCompositeObjects> 
    <TargetDatabaseName>nrc_gateway</TargetDatabaseName> 
    <DeployScriptFileName>clm_model.publish.sql</DeployScriptFileName> 
    <BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss> 
    <ScriptDatabaseCompatibility>True</ScriptDatabaseCompatibility> 
    <ProfileVersionNumber>1</ProfileVersionNumber> 
    <DropDmlTriggersNotInSource>False</DropDmlTriggersNotInSource> 
    <DropIndexesNotInSource>False</DropIndexesNotInSource> 
    <TargetConnectionString>Data Source=.;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString> 
    <AllowIncompatiblePlatform>True</AllowIncompatiblePlatform> 
    <DropConstraintsNotInSource>False</DropConstraintsNotInSource> 
    <DropExtendedPropertiesNotInSource>False</DropExtendedPropertiesNotInSource> 
    <VerifyDeployment>False</VerifyDeployment> 
    <BlockWhenDriftDetected>False</BlockWhenDriftDetected> 
    <RegisterDataTierApplication>False</RegisterDataTierApplication> 
    <IncludeTransactionalScripts>True</IncludeTransactionalScripts> 
    <ExcludeUsers>True</ExcludeUsers> 
    <ExcludeDatabaseRoles>False</ExcludeDatabaseRoles> 
    <DropObjectsNotInSource>False</DropObjectsNotInSource> 
    <DoNotDropAggregates>False</DoNotDropAggregates> 
    <DoNotDropApplicationRoles>False</DoNotDropApplicationRoles> 
    <DoNotDropAssemblies>False</DoNotDropAssemblies> 
    <DoNotDropAsymmetricKeys>False</DoNotDropAsymmetricKeys> 
    <DropPermissionsNotInSource>False</DropPermissionsNotInSource> 
    <GenerateSmartDefaults>True</GenerateSmartDefaults> 
    <ScriptNewConstraintValidation>True</ScriptNewConstraintValidation> 
    </PropertyGroup> 
</Project> 
+0

這些文件有什麼不同? windiff想什麼? –

回答

1

Visual Studio不使用CLI生成腳本,因此沒有觀察交互的選項。 (它甚至不使用公共的Microsoft.SqlServer.Dac API--它具有內部對提供此功能的程序集的可見訪問)。

我可能會從驗證SqlPackage.exe的版本和SSDT的版本是否相同開始。 SqlPackage.exe的較早版本可能不會將某些較新的數據庫選項(例如,數據庫範圍的配置設置)編寫爲腳本。

VS的SqlPackage副本住在這裏:

c:\program files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Extensions\Microsoft\SqlDB\DAC\140 

(需要注意的是最後的「140」文件夾,實際上可能是130甚至120,這取決於已安裝時,SSDT的具體版本)

C:\Program Files (x86)\Microsoft SQL Server\140\DAC\bin 

(注意,同樣,這140可能是130或120,甚至根據DacFramework.msi的特定版本:人們從SQL Server目錄跑這裏來了SqlPackage.exe這是安裝)。

但無論您的SqlPackage.exe位於何處,請檢查其文件版本是否與Visual Studio副本相匹配。

相關問題