小编Ket*_*tan的帖子

WITH CTE 和 WITH CTE (<column_names>) 之间有什么区别?

如在 MSDN 上使用公用表表达式中所示,您可以将 CTE 定义为:

WITH expression_name [ ( column_name [,...n] ) ]
AS
( CTE_query_definition )
Run Code Online (Sandbox Code Playgroud)

并使用它:

SELECT <column_list> FROM expression_name;
Run Code Online (Sandbox Code Playgroud)

假设我有以下 2 个 CTE

with cte1 as(
select name from Table1
)

with cte2(name) as(
select name from Table1
)
Run Code Online (Sandbox Code Playgroud)

一个查询为两个 CTE 输出相同的结果,因为内部查询是相同的。这两者之间的唯一区别是cte2(name)在其声明中定义了列名( )。

当我执行两个 CTE 时,我看不到执行计划有任何不同。

我只是想知道:

  • 如果我不在 CTE 定义中指定任何列名,这有什么区别?
  • 为什么我应该/不应该在创建 CTE 时指定列名?
  • 它是否会影响查询执行计划?(就我所见,它没有任何区别。)

sql-server cte sql-server-2014

12
推荐指数
3
解决办法
1万
查看次数

Bacpac 导入失败并显示错误“元素或注释类 SqlDatabaseOptions 不包含属性类 CatalogCollat​​ion”

我想在我的本地机器上恢复一些生产 azure 数据库以用于开发目的。所以我将生产数据库导出到一个.bacpack文件并在本地下载该文件。现在我正在尝试使用sqlpackage 实用程序在本地计算机上恢复该文件,但它引发了以下错误

*** 导入数据库时​​出错:生成部署计划时出错。部署无法继续。元素或注释类 SqlDatabaseOptions 不包含属性类 CatalogCollat​​ion。

在此处输入图片说明

有人可以告诉我这个错误是什么意思以及如何解决它?

提前致谢。

sql-server restore azure-sql-database bacpac

6
推荐指数
1
解决办法
9779
查看次数

由于“OLDEST_PAGE”,数据库事务日志已满

我们有一个托管在 azure 上的数据库。它是蓝色弹性池的一部分。从昨天开始,我们所有的数据库操作都持续失败,并出现以下错误。

由于“OLDEST_PAGE”,数据库事务日志已满

我们检查了数据库上的所有活动事务,但当前没有活动事务,但日志文件仍然占用 100% 的空间。

数据库日志文件

我已浏览以下文档页面,但无法完全理解该问题:

谁能帮我理解这个问题吗?



更新

当我们将此数据库移至新池时,日志大小会自动减小。搬家后我们没有遇到任何问题。

azure-sql-database transaction-log azure

5
推荐指数
1
解决办法
2万
查看次数

使用聚集列存储索引向表添加新列

我有一个FactsTable1包含 240 列的每日事实表 ' ',我正在其中探索 ' Clustured Columnstore Index'(CCI)。

我想知道,

  • 当我向表中再添加约 50 列时会发生什么?
  • 他们会自动添加到 CCI 吗?或者我必须再次重建CCI?
  • 处理这种情况的最佳方法应该是什么?
  • 如果我必须重建索引以使新列成为 CCI 的一部分,那么如果我不重建会发生什么?它将如何影响我的查询性能?

附加信息 :

  • FactsTable1 包含 400000+ 行和 240 列
  • 它在日期列上分区
  • 它对分析数据的查询量很大。
  • @@版本:Microsoft SQL Server 2016 (RTM) - 13.0.1601.5 (X64)

sql-server columnstore sql-server-2016

1
推荐指数
1
解决办法
2888
查看次数