小编Ton*_*kle的帖子

FILLFACTOR 如何减少页面拆分?

默认的 FILLFACTOR 是 100,我有时被告知将其减少到 80 或更低,以便由于每页上的空白空间而减少页面拆分。

我不明白这一点——如果在默认 FILLFACTOR 为 80 的表上创建新索引,则每页的 20% 空间留空。所以假设一行需要使用 10% 的页面,所以当它满时它可以容纳 10 条记录。FILLFACTOR 为 80,现在只能保存 8 条记录。那么当你添加第 9 条记录时,会出现分页吗?使用 100% FILLFACTOR 时,页面拆分只会发生在第 11 条记录上,因此似乎较低的填充因子会使情况变得更糟。

index sql-server

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

如何从可用性组中删除辅助数据库并重新加入它

我有一个具有多个数据库(DB-A、DB-B、DB-C)和多个辅助数据库(SEC-B、SEC-C)的可用性组 (AG),其中一个数据库不会仅在其中一个数据库上恢复同步次要。

对于此示例,DB-C 未在 SEC-C 上同步,并且重新启动 SQL Server 或恢复 HADR 再多也不会使它重新启动。

  • 我不想从 AG 中删除副本(辅助 SEC-C),因为我将不得不重新同步所有数据库(DB-A、DB-B 和 DB-C),这将花费更多时间比必要的。

  • 我也不想从 AG 中完全删除数据库 (DB-C),因为还有其他辅助 (SEC-B) 没有问题,而且我不想重新同步它或暂时丢失我的HADR 在它工作的辅助节点上。

如何从 AG 中仅删除这个辅助数据库,重新同步它,然后将其添加回 AG?

sql-server availability-groups

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

为什么来自不同 SQL Server 实例的这些 T-SQL 作业在同一实例上执行(AlwaysOn 可用性组)

最近,在我们进行统计更新时,我们的阻止进程仪表板一直在报告被阻止的进程。

很快就找到了原因:更新统计作业步骤 (T-SQL) 在辅助 SQL Server 实例和主 SQL Server 实例上都启动。该作业更新同一数据库的多个统计信息,该数据库是 AlwaysOn 可用性组的一部分。我希望这会在辅助实例上失败。

故障转移历史的简要概述:

由于许可而应保持活动状态的服务器 A(将被命名为活动服务器),在 20/02 晚上 9 点意外故障转移到服务器 B(被动服务器)。

在计划外故障转移之后,我们在 2002 年 2 月 21 日中午 12 点进行了另一次(但这次是计划内的)手动故障转移回 Active Server。

工作经历

在第一次故障转移之前一切都很好,活动服务器是唯一运行该作业的服务器。

在此处输入图片说明 一项工作正在运行。 我们看到在活动端运行的统计更新。(这是当时的主要副本)

在无源服务器作为主要副本的短时间内,我们没有任何监控并且作业历史记录被清除。

故障转移后,回到“正常”状态,在被动节点上处于主节点不到 24 小时后,被动实例上的作业步骤也已在主动实例上启动并运行。

在此处输入图片说明 (我杀死了会话)。

现在对我来说有趣的部分是,这两个作业都在活动服务器上运行,似乎该作业正在使用侦听器访问数据库。但这可能是一个完全不同的原因。

有一个复制作业 PowerShell 任务在每晚凌晨 01 点运行 (dbatools):

powershell.exe Copy-DbaAgentJob -ExcludeJob "CopyJobs,CopyLogins" -Source INDCSPSQLA01  -Destination  INDCSPSQLP01     -Force
Run Code Online (Sandbox Code Playgroud)

我的猜测现在是针对一次,作业复制发生在主动、次要节点 --> 带有 -Force 的主要被动节点。这发生在 21/02 01 AM。

问题

为什么被动实例上的作业步骤在主动实例的数据库上执行?

清单

在这两种情况下,作业目标都是本地的:

在此处输入图片说明

EXEC @ReturnCode = msdb.dbo.sp_add_jobserver @job_id = @jobId, @server_name = N'(local)'
Run Code Online (Sandbox Code Playgroud)

服务器名称正确

select …
Run Code Online (Sandbox Code Playgroud)

sql-server jobs availability-groups sql-server-2017

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

SQL Server 中的冗余索引

我目前正在检查我们数据仓库中的所有索引作为性能调整练习。其中一些索引未在系统统计中使用,我正在考虑删除它们以减少批处理过程中的开销。

其中一些没有意义,因为 PK 列被用在其他索引的中间,等等。但是,我想知道 SQL Server 如何处理多列索引(具有重叠列)。

例子:

NONCLUSTERED INDEX Index1 (A, B, C)

NONCLUSTERED INDEX Index2 (A, B)
Run Code Online (Sandbox Code Playgroud)

SQL Server 是否能够将 Index1 用于与 Index2 和 Index2 不需要的行相同的行?我知道 rowID 包含在 B+tree 的叶级节点中,但是 C 的所有记录在 Index1 中都是有效的。

可以在不影响性能的情况下删除 Index2 吗?
据我所知,索引还可以帮助执行计划中的排序。Index1 也可以用于这些吗?

index sql-server t-sql index-tuning

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

SQL Server 的内存利用率

我正在使用 SQL Server 2012。我有一个最终会被调整的存储过程,但我有一个问题。我的服务器内存为 32 GB,在 SQL Server 中分配的最大内存为 20 GB。当我执行这个 SP 时,逻辑读取大约是 4000000,所以 8kb 的 4M 数据页时间,除以 1024,我将在内存中获得 30 GB 的数据。

我的问题是如果我只分配了 20 GB 的内存,SQL Server 如何在内存中保留 30 GB 的数据?可能我的问题看起来很傻,但需要你们的帮助。谢谢

记忆

sql-server memory

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

SQL Server - 备份还原 - 丢失索引?

它看起来像在客户端站点,在数据库备份和还原(从 SQL Server 2008 到 SQL Server 2012)之后,看起来它们从表中丢失了索引,我们不得不手动创建它们。我们已经看到了两个这样的例子。

我认为备份和恢复可以保持所有对象完好无损。这可能吗?是否有一个设置可以让用户在还原过程中忽略对象?

index sql-server backup restore

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

SQL Server AlwaysOn 数据库无法自动播种,无法找到日志,原因如下

我已将一个数据库添加到已经拥有一些数据库的可用性组,所有这些数据库都已播种并同步到辅助数据库。

最后一个似乎被添加到可用性组中,但被标记为“不同步”并且不会返回任何错误。我已经尝试了多次,结果相同。

我查看了扩展事件、事件查看器......什么也没有。单击仪表板中的“警告”没有任何有用的信息。辅助数据库上根本不存在数据库文件。我怀疑它在播种过程开始时就被阻止了(但显然是在“添加到 AG”向导中的初始验证之后)。

我有一种明显的感觉,SQL Server 一定正在将相关的故障消息记录到一些我不知道的 DMV 中。

是否有一个规范的指南来指导人们应该在所有地方寻找与AlwaysOn相关的错误?

sql-server availability-groups sql-server-2017

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

当版本存储操作没有 tempdb 空间时会发生什么?

如果 tempdb 空间不足,需要版本存储空间的事务会失败,还是等待空间被释放?

sql-server

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

如何将 SQL Server 2017 设置为服务

我有一个关于将 SQL Server 2017 设置为服务的最佳方式的问题。

我有客户将 SQL Server 数据库作为服务购买,就好像它是 Azure 或 AWS 实例一样,他们无法访问服务器。他们在实例中只有用户名和密码,我需要向这些用户隐藏可通过 SQL Server Management Studio 或 T-SQL 命令访问的服务器配置,例如分配给实例的内存、CPU 数量等.

在 SQL Server 2016 中,我通过删除 master..xp_msver 视图的权限来完成此操作。例如,如果没有此权限,他们将无法查看实例属性(在 SSMS 中右键单击服务器)和 Facets 表单中的一些数据。即使没有此权限,他们也可以登录并在其数据库中执行所需的一切操作。

但在 SQL Server 2017 中,这不再有效,如果我拒绝此视图的权限,则无法再登录 SQL Server。

我知道将标准 SQL Server 用作服务可能不正确,也许它还没有为此做好准备,但是有正确的方法吗?或者可以使用哪些替代方案?

我花了很多时间在 Google 上试图寻找替代方案,但是对于 SQL Server 2017,我没有找到任何隐藏服务器设置的东西。

注意:我的用户使用 SQL Server Management Studio...

sql-server sql-server-2017

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

SSIS 执行的 SQL 代理作业失败,并显示“指定了无效的报告选项。仅允许 E、W、I、C、D、P、V 和 N。”

具有 SQL Server Integration Services 包步骤的 SQL 代理作业失败并显示以下消息:

以用户身份执行:DOMAIN\SQLAGENTACCOUNT。适用于 64 位的 Microsoft (R) SQL Server 执行包实用程序版本 13.0.4259.0 版权所有 (C) 2016 Microsoft。版权所有。指定的报告选项无效。仅允许 E、W、I、C、D、P、V 和 N。命令行参数无效。这一步失败了。

sql-server ssis sql-server-agent

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