在使用 Ola 的IndexOptimize存储过程重新索引期间,如果存在大量大型索引碎片整理,则远程异步副本的日志发送队列可能会变得非常大,这需要巨大的事务日志。脚本中有一个@Delay 参数可用于在每个索引操作之间插入延迟,但它不提供仅在日志发送队列高时才延迟的能力。
需要更智能的节流机制来控制大量重新索引期间的日志发送队列大小。
是的,我知道重新索引对于我们的企业级 SSD 来说并不是真正必要的,但我们这样做是为了安抚那些将任何性能问题归咎于碎片的第三方支持组织。
在使用 Ola 的IndexOptimize存储过程重新索引期间,如果存在大量大型索引碎片整理,则远程异步副本的日志发送队列可能会变得非常大,这需要巨大的事务日志。脚本中有一个@Delay 参数可用于在每个索引操作之间插入延迟,但它不提供仅在日志发送队列高时才延迟的能力。
需要更智能的节流机制来控制大量重新索引期间的日志发送队列大小。
是的,我知道重新索引对于我们的企业级 SSD 来说并不是真正必要的,但我们这样做是为了安抚那些将任何性能问题归咎于碎片的第三方支持组织。
如果 tempdb 空间不足,需要版本存储空间的事务会失败,还是等待释放空间?
具有 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。命令行参数无效。步骤失败。
我有一个包含多个数据库(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?
假设有问题的堆栈转储无法映射到已知问题,如果堆栈转储似乎没有引起问题并且之后一切正常,是否应该为其打开支持事件?还是应该仅在导致中断或功能丢失时才打开事件?
Tempdb 正在增长,它是所有版本存储数据。当我跑步时:
select hostname,elapsed_time_seconds,session_id, transaction_id, is_snapshot, blocked, lastwaittype, cpu, physical_io, open_tran, cmd
from sys.dm_tran_active_snapshot_database_transactions a
join master..sysprocesses b
on a.session_id=b.spid
order by a.elapsed_time_seconds desc
这显示两个会话的 elapsed_time_seconds 接近 400,000(约 4.5 天)。但是,每次我检查时,这些会话的 open_tran 列都是零。该应用程序正在使用隐式事务——不确定这是否相关。
此外,从今天早上起,为其中一个会话报告的主机名已更改(不,IP 地址和主机名都没有更改)。因此,似乎今天早上拥有该会话 ID 的客户端断开连接,而另一个客户端现在拥有该会话 ID。
尽管大多数时候这些会话没有显示活动事务,但我在 sys.dm_tran_active_transactions 中找到了与 transaction_id 匹配的事务,具有以下属性:
transaction_begin_time: [~4.5 days ago]
name: DTCXact
transaction_type: 4
transaction_state: 2
transaction_status: 12
transaction_status2: 386
dtc_state: 1
dtc_status: 0
dtc_isolation_level: 4096
有没有办法解释我所看到的?如果没有打开的交易,为什么他们在版本存储中仍然有一些活跃的东西?
SQL Server 2014 SP2 12.0.5214.6
在已启用读提交快照隔离的系统上,sp_whoisactive 返回的读取、写入、CPU 等统计信息是否包括与维护 tempdb 中的版本相关的活动?
我们最近将非生产 SQL Server 2008 R2 系统升级到 SP3,然后 Windows 更新安装了最新的安全更新 (10.50.6560.0)。我看到 10.50.6542.0 中提供了对 2008 R2 的 TLS 1.2 支持,但该更新不会安装在 6560 之上。登录尝试失败,我可以在事件查看器中看到客户端正在请求 TLS 1.2,但服务器没有不支持。
SSMS 返回:
...(提供者:SSL 提供者,错误:0 - 现有连接被远程主机强行关闭。)
(Microsoft SQL Server,错误:10054)
服务器上的系统事件日志:
事件 ID 36874
从远程客户端应用程序收到 TLS 1.2 连接请求,但服务器不支持客户端应用程序支持的任何密码套件。SSL 连接请求失败。
我尝试更新客户端和服务器上的各种 SQL 客户端,在服务器上的注册表中启用 TLS 1.2(并重新启动),但无济于事。所以现在我开始认为build 6560不支持它,如果是这样的话,我必须以某种方式卸载它,以便我可以先安装build 6542。
我们有其他运行相同构建的服务器运行良好,所以我试图找出这台服务器的不同之处——还没有运气。
在 的输出中sp_WhoIsActive
,reads、writes、CPU 和 wait_info 等列是针对会话累积的,还是只是针对批处理累积的?我们有一个阻塞很多并显示数百万次读取的查询,但是当我从 SSMS 批量运行八个查询时,读取是个位数,所以我试图了解是否发生了不同的事情应用程序运行它的方式会导致它读取更多内容。
或者它可以是不同的东西吗?我注意到该会话有 2 个未结交易。这些统计数据能否代表该会话当前处于活动状态的所有交易?
将 SSIS 包从开发服务器部署到另一个环境后,包的执行和验证失败并出现以下错误:
错误:#5 的版本)Source - ODBC - Greenplum [object name] 与此版本的 DataFlow 不兼容
SQL Server 和 Greenplum ODBC 驱动程序版本在所有相关服务器上都是相同的。服务器运行 SQL Server 2016,SQL Server Management Studio 2017 用于在服务器之间部署包。
假设一个组织拥有成功使用可用性组所需的一切,并且他们已经成功使用可用性组几年了,是否有任何理由说明日志传送会成为更好的 DR 解决方案?似乎人们仍在投入日志传送,只是因为它可以满足 RPO 和 RTO。但是,如果使用 AG 不需要任何额外费用,并且 DBA 员工有使用 AG 的经验,那么为什么日志传送会更好呢?
我唯一能想到的是日志传送的内置延迟允许人们在有人忘记在 UPDATE 或 DELETE 语句上放置 WHERE 子句的情况下快速恢复——如果它被及时捕获的话。不太可能,也不是我们关心的事情。
我的一般经验是,随着数据库负载的增加,日志传送需要更多的干预和调整,更难进行故障转移,并且通常有点像 Rube Goldberg 机器(尽管是这类机器的一个非常成功的样本)。
我们的工作要求是对所有与 SQL Server 的连接进行加密。设置报告服务器 (2016) 后,我看到与 SQL Server 的未加密连接。还没有设置数据源,所以这不是与报表数据源关联的连接,它只是 RS 与 ReportServer 数据库建立的连接。我在配置数据库和凭据的设置中的任何地方都看不到用于加密连接的选项。
如何从客户端配置此连接以使用加密?我不想在服务器端强制加密,因为这可能会中断其他连接(我们正在努力实现加密)。是的,我们安装了证书并且可以正常工作——可以连接来自 SSMS 和其他客户端的加密。
这不是关于设置 RS 以在门户上使用 HTTPS。那是设置和工作。
在 SQL Server 2014 12.0.4237.0 系统上,定期记录以下错误(过去 66 天内记录了 11 次):
2018-03-22 09:28:11.170 错误:50101,严重性:16,状态:
10。2018-03-22 09:28:11.170 内部存储过程失败 - ID_TransUserActionCreate - SQL 错误编号 0
到目前为止,我还没有发现任何关于代码 50101 错误的引用,令人惊讶的是,Google 对“ID_TransUserActionCreate”完全没有返回任何内容。
至于“记录时发生了什么”,我还不知道,因为系统上有几个数据库,我们还没有开始收集详细信息来回答这个问题。所以这个问题是问是否有人知道或有好主意,此消息的含义和/或是否是我应该关心的事情。
我正在尝试查找需要运行哪些查询(或多个查询)以确定可用性组是否存在任何类型的问题。我一直在使用:
SELECT @@SERVERNAME AS 'primary_replica', cs.database_name, rs.synchronization_health_desc
FROM sys.dm_hadr_database_replica_states rs
join sys.dm_hadr_database_replica_cluster_states cs on rs.replica_id =
cs.replica_id and rs.group_database_id = cs.group_database_id
WHERE rs.is_local = 1
事实证明,同步健康 ( select * from sys.dm_hadr_availability_group_states
) 可以是 NOT_HEALTHY,但上面的查询没有显示副本有任何问题。我已经尝试查看所有包含信息的各种 DM,但它是一个迷宫或单词,我无法找到通往某处必须存在的 SQL 奶酪的方法。
表明存在需要解决的问题的查询是什么?我不需要它具体或指定原因,我只需要知道有问题。我知道在故障转移期间,一些状态将是 NOT_HEALTHY,我们通过在发送警报之前要求 x 分钟的不健康来解决这个问题。
我在此示例中使用KB2977316和KB3045324。这些是 SQL Server 2014 RTM 的安全更新。
如果我有一个 SQL Server 2014 RTM 系统,我是否需要安装这两个,只安装最后一个发布的,还是版本号最高的那个?2381 更新是一个 600 MB 的下载,而 2269 版本是 183 MB,所以逻辑会表明 2269 不包含 2381 中包含的所有修复程序,我需要安装两者。我想让我失望的是,随着安装更新的更新而减少版本号似乎很奇怪。
请将答案和评论的范围仅限于安全更新。这个问题与 CU 或 SP 无关(除了根据特定的 CU 或 SP 级别应用不同的安全更新)。谢谢!