小编Avi*_*Avi的帖子

服务包和累积更新

目前,这些更新可用于 SQL Server 2014:

  1. SQL Server 2014 SP1 CU2
  2. SQL Server 2014 SP1 CU1
  3. SQL Server 2014 SP1

如果我想做滑流安装:

仅下载 #1 并使用它进行滑流安装就足够了吗?

或者我应该下载 #3,然后进行滑流安装,然后应用 #1?

sql-server installation sql-server-2014

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

小表上的聚集列存储索引

聚集列存储索引表通常对大型表很有用。理想情况下有数百万行。并且对于查询也很有用,它仅选择此类表中可用列的子集。

如果我们打破这两个“规则”/最佳实践会发生什么?

  1. 就像有一个聚集列存储索引表,它最多只能存储几千或几十万行。
  2. 并针对需要所有列的那些聚集列存储表运行查询。

与行存储的聚集索引表相比,我的测试没有显示任何性能下降。这在我们的案例中很棒。

是否有违反这两条规则的“长期”影响?或者任何尚未出现的隐藏陷阱?

上下文为什么需要它:我设计了一个数据库模型,它将用于不同供应商数据库的许多实例。每个数据库中的模式保持不变,但不同的供应商具有不同的数据量。因此,很少有小供应商可能会在他们的表中得到少量数据(<1 000 000)。我不能让自己为行存储和列存储模型保留两个不同的数据库。

columnstore sql-server-2017

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

在列存储索引扫描运算符之前消除过滤运算符

我有一个包含数百万行的大型事实表,称为 MyLargeFactTable,它是一个聚集列存储表。

那里也有一个复合主键约束(customer_id、location_id、order_date 列)。

我还有一个临时表#my_keys_to_filter_MyLargeFactTable,具有相同的 3 列,它包含这 3 个键值的几千个 UNIQUE 组合。

以下查询为我提供了所需的结果集

...
FROM #my_keys_to_filter_MyLargeFactTable AS t
JOIN dbo.MyLargeFactTable AS m
ON m.customer_id = t.customer_id
AND m.location_id = t.location_id
AND m.order_date = t.order_date
Run Code Online (Sandbox Code Playgroud)

但我注意到事实表上的索引扫描运算符返回的行数比它应有的多(大约一百万)并将其输入到过滤器运算符中,这进一步将结果集减少到所需的几千行。

在此处输入图片说明

索引扫描操作符读取多行(它们相当宽的行)增加了 IO,并显着减慢了整个查询。

我的参数不是 sargable 吗?

如何删除 Filter 运算符并以某种方式强制 Index Scan 运算符仅读取几千行?

表定义:

create table #my_keys_to_filter_MyLargeFactTable 
(
customer_id varchar(96) not null,
location_id varchar(96) not null,
order_date date not null,
primary key clustered (customer_id,location_id,order_date)
)

create table MyLargeFactTable
(
customer_id varchar(96) not null,
location_id varchar(96) not null,
order_date …
Run Code Online (Sandbox Code Playgroud)

sql-server t-sql index-tuning columnstore sql-server-2017

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

仅分段恢复一个文件组,不恢复主文件组

我有一个简单恢复模型的数据库,并定期进行完整、差异备份。

该数据库还有每个月的文件组。每个文件组只有一个 NDF 文件。

像这样:

FileGroup: PRIMARY
File: Primary.mdf

FileGroup: FG201801
File: 201801.ndf

FileGroup: FG201802
File: 201802.ndf

FileGroup: FG201803
File: 201803.ndf

etc
Run Code Online (Sandbox Code Playgroud)

我的目标有两个:

  1. 能够按分区级别进行备份。正如我所读到的,只有当我将文件组标记为只读时才可能。所以我已经分离了部分备份BAK文件。 https://learn.microsoft.com/en-us/sql/relational-databases/backup-restore/partial-backups-sql-server

  2. 第二个目标是(我的问题在这里),能够仅恢复一个文件组,而无需恢复主文件组或触及任何其他文件组。

有可能吗?

据了解,如果我只想恢复 FG201802 ,而 PRIMARY 和其他文件保持不变,那么首先我必须恢复包含 PRIMARY 文件组的完整备份,然后我可以恢复 FG201802 的部分备份。如何在不恢复 PRIMARY 的情况下恢复 FG201802?

有人可以向我指出一个可以演示这一点的在线资源吗?网上的所有文章(我发现)总是开始恢复主完整备份,然后一一应用其余的部分备份。

我只想恢复部分备份,怎么办?

谢谢你!

sql-server backup filegroups restore sql-server-2017

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