Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Deploy SQL Server database project (SSDT) via command line

I have a SQL Server Database Project targeting a SQL Server 2012 RC0 database. The project was created in Visual Studio 2010 + SQL Server Data Tools CTP4. (The project type is different than the regular Visual Studio 2010 database projects -- it's the next version of SQL Developer Tools CTP3 Juneau)

It deploys fine in the IDE. How can I deploy it via the command line?

I tried VSDBCMD.exe but it expects a .deploymanifest file which is not created by the new project type.

like image 841
Keith Avatar asked Dec 03 '11 23:12

Keith


People also ask

How do I create an Ssdt project from an existing database?

Select the SQL Server Database Project, and type and enter WideWorldImporters-SSDT as the project name. Ensure the Add to Source Control check box is selected. Change the folder if you want to store this in a different location. Click OK to create the project.


2 Answers

Use sqlpackage.exe, located in C:\Program Files\Microsoft SQL Server\{version}\DAC\bin or C:\Program Files (x86)\Microsoft SQL Server\{version}\DAC\bin where {version} =110 (SQL Server 2012), 120 (SQL Server 2014), etc.

Command line arguments:

/Action:{Extract|Report|Publish|Script}  Specifies the action to be performed.
                                         (short form /a)

/Quiet[+|-]                              Specifies whether detailed feedback is
                                         suppressed. Defaults to False. (short
                                         form /q)

/OverwriteFiles[+|-]                     Specifies if sqlpackage.exe should
                                         overwrite existing files. Specifying
                                         false causes sqlpackage.exe to abort
                                         action if an existing file is
                                         encountered. Default value is True.
                                         (short form /of)

/SourceServerName:<string>               Defines the name of the server hosting
                                         the source database. (short form /ssn)

/SourceDatabaseName:<string>             Defines the name of the source
                                         database. (short form /sdn)

/SourceUser:<string>                     For SQL Server auth scenarios, defines
                                         the SQL Server user to use to access
                                         the source database. (short form /su)

/SourcePassword:<string>                 For SQL Server auth scenarios, defines
                                         the password to use to access the
                                         source database. (short form /sp)

/SourceTimeout:<int>                     Specifies the timeout for establishing
                                         a connection to the source database in
                                         seconds. (short form /st)

/SourceEncryptConnection[+|-]            Specifies if SQL encryption should be
                                         used for the source database
                                         connection. (short form /sec)

/SourceTrustServerCertificate[+|-]       Specifies whether to use SSL to
                                         encrypt the source database connection
                                         and bypass walking the certificate
                                         chain to validate trust. (short form
                                         /stsc)

/SourceConnectionString:<string>         Specifies a valid SQL Server/Azure
                                         connection string to the source
                                         database. If this parameter is
                                         specified it shall be used exclusively
                                         of all other source parameters. (short
                                         form /scs)

/SourceFile:<string>                     Specifies a source file to be used as
                                         the source of action instead of a
                                         database. If this parameter is used,
                                         no other source parameter shall be
                                         valid. (short form /sf)

/TargetServerName:<string>               Defines the name of the server hosting
                                         the target database. (short form /tsn)

/TargetDatabaseName:<string>             Specifies an override for the name of
                                         the database that is the target of
                                         sqlpackage.exe Action. (short form
                                         /tdn)

/TargetUser:<string>                     For SQL Server auth scenarios, defines
                                         the SQL Server user to use to access
                                         the target database. (short form /tu)

/TargetPassword:<string>                 For SQL Server auth scenarios, defines
                                         the password to use to access the
                                         target database. (short form /tp)

/TargetTimeout:<int>                     Specifies the timeout for establishing
                                         a connection to the target database in
                                         seconds. (short form /tt)

/TargetEncryptConnection[+|-]            Specifies if SQL encryption should be
                                         used for the target database
                                         connection. (short form /tec)

/TargetTrustServerCertificate[+|-]       Specifies whether to use SSL to
                                         encrypt the target database connection
                                         and bypass walking the certificate
                                         chain to validate trust. (short form
                                         /ttsc)

/TargetConnectionString:<string>         Specifies a valid SQL Server/Azure
                                         connection string to the target
                                         database. If this parameter is
                                         specified it shall be used exclusively
                                         of all other target parameters. (short
                                         form /tcs)

/TargetFile:<string>                     Specifies a target file (i.e., a
                                         .dacpac files) to be used as the
                                         target of action instead of a
                                         database. If this parameter is used,
                                         no other target parameter shall be
                                         valid. This parameter shall be invalid
                                         for actions that only support database
                                         targets. (short form /tf)

/Properties:<string>                     A name value pair for a Publish
                                         property, {PropertyName}={Value}.
                                         Refer to the help for the Publish
                                         action for valid property names.
                                         (short form /p)

/Variables:<string>                      Optional only if /Action:Publish is
                                         specified. Valid values for parameter
                                         name shall be SQL Command variables
                                         specified in the .dacpac file only.
                                         Parameter names specified that are not
                                         declared in the .dacpac shall result
                                         in an error. Valid command variable
                                         values shall be context-specific based
                                         on the command variable itself (e.g.,
                                         database name vs. schema names).
                                         (short form /v)

/Profile:<string>                        Optional if /Action:Publish is
                                         specified. Valid value is a file path
                                         to a Publish Profile. A user shall be
                                         able to use a Publish Profile to
                                         define the collection of Publish
                                         Properties to use for a Publish
                                         episode. (short form /pr)

/OutputPath:<string>                     Required if /Action:Report or
                                         /Action:Script is specified. Valid
                                         value is a file path to where the
                                         comparison report shall be written.
                                         (short form /op)

@<file>                                  Read response file for more options.

Example:
sqlpackage.exe /Action:Publish /SourceFile:C:\DbProject\bin\Debug\DbProject.dacpac /TargetServerName:localhost /TargetDatabaseName:TestDb

With target db details stored in a profile:
sqlpackage.exe /Action:Publish /SourceFile:C:\DbProject\bin\Debug\DbProject.dacpac /Profile:C:\DbProject\LocalDb.publish.xml

If you get the error "Unable to connect to target server" then make sure you are using the correct version of sqlpackage.exe (see here for more details).

like image 157
Keith Avatar answered Oct 21 '22 00:10

Keith


If you are a masochist Microsoft also provide documentation on deploying the DACPAC via SMO, under the guise of 'using PowerShell'.

Of course you can call sqlpackage from PowerShell too...

like image 3
piers7 Avatar answered Oct 21 '22 00:10

piers7