1. Build a sql project which contains definitions of tables, views, functions, etc.
When built successfully, a dacpac file is output to the bin folder.
A sql project is a Visual Studio SQL project.
C:\>"Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" "C:\git\EDW_150_History_Area\EDW_150_History_Area.sqlproj" /p:Configuration=Release /p:BuildProjectReferences=false
2. Publish the dacpac file to a local database. A profile needs to be specified to point the target database and other properties.
C:\>"Program Files (x86)\Microsoft Visual Studio\2017\Professional\Common7\IDE\Extensions\Microsoft\SQLDB\DAC\150\sqlpackage.exe" /Action:Publish /SourceFile:"C:\git\EDW_150_History_Area\bin\Release\EDW_150_History_Area.dacpac" /Profile:"C:\temp\example.publish.xml"
A profile example example.publish.xml is:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<IncludeCompositeObjects>True</IncludeCompositeObjects>
<TargetDatabaseName>EDW_150_History_Area</TargetDatabaseName>
<DeployScriptFileName>EDW_150_History_Area.sql</DeployScriptFileName>
<TargetConnectionString>Data Source=(local);Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=True</TargetConnectionString>
<ProfileVersionNumber>1</ProfileVersionNumber>
<BlockOnPossibleDataLoss>False</BlockOnPossibleDataLoss>
<DropStatisticsNotInSource>False</DropStatisticsNotInSource>
<IncludeTransactionalScripts>True</IncludeTransactionalScripts>
<ScriptDatabaseCollation>True</ScriptDatabaseCollation>
<ScriptDatabaseCompatibility>True</ScriptDatabaseCompatibility>
<IgnoreFillFactor>False</IgnoreFillFactor>
<IgnoreIndexPadding>False</IgnoreIndexPadding>
<IgnoreSemicolonBetweenStatements>False</IgnoreSemicolonBetweenStatements>
<ExcludeTables>False</ExcludeTables>
<ExcludeExternalTables>False</ExcludeExternalTables>
<ExcludeFilegroups>False</ExcludeFilegroups>
<ExcludeFileTables>False</ExcludeFileTables>
<ExcludeExternalFileFormats>False</ExcludeExternalFileFormats>
<ExcludeExternalDataSources>False</ExcludeExternalDataSources>
<DropObjectsNotInSource>False</DropObjectsNotInSource>
<CreateNewDatabase>True</CreateNewDatabase>
</PropertyGroup>
</Project>