【问题标题】:Deploy SQL Server database project (SSDT) via command line通过命令行部署 SQL Server 数据库项目 (SSDT)
【发布时间】:2011-12-03 23:26:35
【问题描述】:

我有一个针对 SQL Server 2012 RC0 数据库的 SQL Server 数据库项目。该项目是在 Visual Studio 2010 + SQL Server Data Tools CTP4 中创建的。 (项目类型不同于常规的 Visual Studio 2010 数据库项目——它是 SQL Developer Tools CTP3 Juneau 的下一个版本)

它在 IDE 中部署良好。如何通过命令行部署?

我尝试了 VSDBCMD.exe,但它需要一个不是由新项目类型创建的 .deploymanifest 文件。

【问题讨论】:

    标签: sql-server visual-studio sql-server-data-tools sqlpackage


    【解决方案1】:

    使用sqlpackage.exe,位于C:\Program Files\Microsoft SQL Server\{version}\DAC\bin或C:\Program Files (x86)\Microsoft SQL Server\{version}\DAC\bin,其中{version} =110(SQL Server 2012)、120(SQL Server 2014)等

    命令行参数:

    /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.
    

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

    目标数据库详细信息存储在配置文件中:
    sqlpackage.exe /Action:Publish /SourceFile:C:\DbProject\bin\Debug\DbProject.dacpac /Profile:C:\DbProject\LocalDb.publish.xml

    如果您收到“无法连接到目标服务器”错误,请确保您使用的是正确版本的 sqlpackage.exe(有关详细信息,请参阅here)。

    【讨论】:

    • 在同时指定 /TargetConnectionString 时是否会覆盖 /Profile? @基思
    • @Json - 你有没有找到一种方法在同时指定 TargetConnectionString 时覆盖?
    【解决方案2】:

    如果您是受虐狂,Microsoft 还提供 documentation on deploying the DACPAC via SMO,以“使用 PowerShell”为幌子。

    当然你也可以从 PowerShell 调用 sqlpackage...

    【讨论】:

    • 伟大的链接文章。但是请花时间用文章的相关摘录来扩展您的答案,以防止可能的链接腐烂!谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-09
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 2021-11-06
    相关资源
    最近更新 更多