sql-server - 组内 STRING_AGG 和 Visual Studio 的问题

标签 sql-server visual-studio-2015 azure-sql-database

我使用的是 Visual Studio 2015,但我的 SQL Server 数据库项目中的 STRING_AGG THIN GROUP 出现问题。

SELECT [Continent], 
STRING_AGG([Country], ', ') WITHIN GROUP (ORDER BY [Country]) AS CountryList
FROM [Country]
GROUP BY [Continent]

此代码给出错误 SQL46010: AS 附近的语法不正确。 没有

WITHIN GROUP (ORDER BY [Country])

没问题。

目标平台设置为

Microsoft Azure SQL Database V12

调试目标连接设置为本地 SQL Server vNext 数据库。

在 SQL Server Management Studio 中,这段代码执行没有任何问题。在 SSMS 中或从代码运行存储过程会给出预期的正确结果(每个大洲 1 行,每个大洲的国家/地区列表,以逗号分隔,按国家/地区排序)。

同时,我安装了 Visual Studio 2017,希望这能消除错误,但没有成功。

已安装 SQL Server Data Tools 17(内部版本 14.0.61704.140)。

最佳答案

我遇到了类似的问题,怀疑这可能是兼容性问题,因为以下内容为我进行了排序。我没有意识到每个 SQL Server 数据库都有自己的 COMPATIBILITY_LEVEL,这会影响数据库的工作方式。 https://learn.microsoft.com/en-us/sql/t-sql/statements/alter-database-transact-sql-compatibility-level?view=sql-server-2017 解释如何查询和更改此数据库属性。

SELECT NAME, COMPATIBILITY_LEVEL FROM sys.databases; 显示我的数据库的 COMPATIBILITY_LEVEL 为 100(即它与 SQL Server 2008 兼容)。

运行完毕

ALTER DATABASE <DATABASE_NAME>
SET COMPATIBILITY_LEVEL = 110

(或 120 或 130),因此它现在与 SQL Server 2012+ 兼容,包含 STRING_AGG 函数的WITHIN GROUP 子句的查询开始工作。

关于sql-server - 组内 STRING_AGG 和 Visual Studio 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43611024/

相关文章:

sql-server - 使用自连接表变量的 T-SQL UPDATE

sql - SQL中如何轻松查看多个表是否互斥?

sql - 将一张表中的数据插入到多张表中

c# - 如何使用 Ms 单元项目 C# 代码为逻辑应用步骤编写单元测试?

c# - 使用带有静态类的语句在 visual studio 2015 CTP 中不起作用

silverlight - 将 C# Silverlight 应用程序转换为 AZURE CLOUD 平台?

java - 使用域凭据与 JDBC 建立 MS SQL 2008 连接

c - 打包结构会影响子结构吗?

sql - 使用 Azure SQL 跨数据库查询

asp.net - Azure 应用服务与 SQL 数据库的连接速度缓慢