[英]Deploy SQL Server database project (SSDT) via command line
I have a SQL Server Database Project targeting a SQL Server 2012 RC0 database.我有一个针对 SQL Server 2012 RC0 数据库的 SQL Server 数据库项目。 The project was created in Visual Studio 2010 + SQL Server Data Tools CTP4.
该项目是在 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)
(项目类型不同于常规的 Visual Studio 2010 数据库项目——它是 SQL Developer Tools CTP3 Juneau 的下一个版本)
It deploys fine in the IDE.它在 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.我尝试了 VSDBCMD.exe,但它需要一个不是由新项目类型创建的 .deploymanifest 文件。
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.使用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) 等。
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).如果您收到错误“无法连接到目标服务器”,请确保您使用的是正确版本的 sqlpackage.exe(有关更多详细信息,请参见此处)。
If you are a masochist Microsoft also provide documentation on deploying the DACPAC via SMO , under the guise of 'using PowerShell'.如果您是受虐狂,Microsoft 还提供有关通过 SMO 部署 DACPAC 的文档,打着“使用 PowerShell”的幌子。
Of course you can call sqlpackage from PowerShell too...当然你也可以从 PowerShell 调用 sqlpackage ......
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.