从命令行构建一个面向 SQL Server 2012 的数据库项目

Posted

技术标签:

【中文标题】从命令行构建一个面向 SQL Server 2012 的数据库项目【英文标题】:Building from commandline a database project targetting SQL Server 2012 【发布时间】:2012-08-28 10:21:37 【问题描述】:

我在 Visual Studio 2010 中有一个面向 SQL Server 2012 的数据库项目,并且至少有一个存储过程使用新语法重新抛出错误(“THROW;”)

尝试像这样从命令行构建项目:

msbuild /t:Build MyDatabaseProject.dbproj

输出这个:

Microsoft (R) Build Engine Version 4.0.30319.1
[Microsoft .NET Framework, Version 4.0.30319.269]
Copyright (C) Microsoft Corporation 2007. All rights reserved.

Build started 28.08.2012 13:14:23.
Project "F:\My\Path\MyDatabaseProject.dbproj" on node 1 (Build target(s)).
DspBuild:
  Creating a model to represent the project...
  Loading project files...
  Building the project model and resolving object interdependencies...
  Validating the project model...
F:\MY\PATH\SCHEMA OBJECTS\SCHEMAS\DBO\PROGRAMMABILITY\STORED PROCEDURES\SOMEPROC.PROC.SQL(95,3,95,3): Build error SQL02010: Incorrect syntax near THROW. [F:\My\Path\MyDatabaseProject.dbproj]
...

我的猜测是我应该添加一个参数来指定 SQL Server 2012 T-SQL 方言,但我不确定。

从 Visual Studio 构建项目没有任何问题。


更新:我不确定我有什么类型的项目。项目属性如下所示:

补充资料:

【问题讨论】:

【参考方案1】:

您使用的似乎是旧的数据库项目类型,它只支持 SQL Server 2008。有一个新的数据库项目类型支持 SQL Server 2012(具有非常通用的名称“SQL Server 数据库项目”)用于Visual Studio 2010,您可以将其作为SQL Server Data Tools 最新版本的一部分进行安装。

新项目类型需要不同的命令行语法,您可以找到 here。

顺便说一句,Visual Studio 可以轻松地将您现有的数据库项目转换为新的项目类型。

【讨论】:

我已经安装了 Visual Studio 处理此项目所需的数据工具,并且按照说明,我可以使用 Visual Studio 毫无问题地构建项目。 您项目的 .dbproj 扩展名意味着您仍在使用旧的项目模板。旧模板不支持 SQL Server 2012。 嗯,我确实在 .\sql\debug 文件夹中找到了一个 dacpac 文件。会这样吗? 不。新模板没有 sql 文件夹。 (.dacpac 文件被写入 bin\Debug。)您需要通过在 Visual Studio 的解决方案资源管理器中右键单击它并选择 Convert to SQL Server Database project 来升级您的项目。 嗯...我似乎没有那个菜单命令。但是似乎我错了,主项目文件是 .sqlproj 而不是 .dbproj(dbproj 似乎是剩余的)。

以上是关于从命令行构建一个面向 SQL Server 2012 的数据库项目的主要内容,如果未能解决你的问题,请参考以下文章

text 从命令行打开Microsoft SQL Server Management Studio

SQL Server 游标

通过 ASP.NET Core Web API 使用存储过程从 SQL Server 返回多个行集

SQL Server游标

SQL Server:本地查询时间与网络查询时间...和锁定

从查询 SQL Server 中的每个日期获取第一个和最后一个日期时间