请您帮我了解使用 Ola 的解决方案而不是维护计划的利弊吗?我准备了一个基于 SQL Pass ( http://www.pass.org/DownloadFile.aspx?File=ebae1b31 )的演示文稿,我将展示它。
我还准备了一些 Ola 解决方案解决而维护计划解决方案没有解决的场景。大家能帮我从技术上解释一下吗?
顺便说一下,我们正在使用 Ola 的解决方案管理近 150 多台服务器(2008/2012/2014/2016 的组合),其中至少有 75%。我喜欢 Brent Ozar 的这篇文章。但在评论中,Brent 建议对我们拥有的服务器数量使用基于脚本的解决方案。https://www.brentozar.com/archive/2012/04/maintenance-plans-roombas-suck-good-way/
我继承了这样的数据库系统。目前,我在 Windows Server 2008 R2 和 SQL Server 2008R2 SP2 机器上拥有 SQL Server 2005 兼容模式下的发布者数据库。分发服务器在同一台机器上。订阅服务器为 2008R2 SP2,数据库为 SQL Server 2008 兼容模式。我们正在使用事务复制。隔离级别为 Read Committed。分发服务器驻留在发布服务器上。即使当我右键单击发布并且订阅显示为请求订阅时,我认为这无关紧要,因为分发者驻留在发布者本身上。如果我错了,请纠正我。存储系统为IBM flex,由发布者和订阅者等五台服务器共享。
从几天开始,我看到几个小时的延迟,它在早上赶上并在下午再次开始。我跟着https://www.mssqltips.com/sqlservertip/3598/troubleshooting-transactional-replication-latency-issues-in-sql-server/看看到底发生了什么。我运行了以下查询。
USE distribution
go
EXEC Sp_browsereplcmds
@xact_seqno_start = '<seq#>' -- seq# is same for start and end
,@xact_seqno_end = '<seq#>'
,@publisher_database_id = <publisher database id --this is different than database_id
Run Code Online (Sandbox Code Playgroud)
我看到据称在复制涉及的几个表上进行了大量更新,而日志读取器只是扫描事务日志,在事务完成之前无法复制任何内容。有趣的是,我看不到发布者和/或订阅者的任何阻塞。将隔离级别更改为 Read Committed Snapshot Isolation (RCSI) 会有帮助吗?将轮询间隔更改为 1 并将 readbatchsize 更改为 1000 或 5000 是否有帮助。更改该设置的命令是什么?
我更改了日志阅读器代理默认配置文件如下。轮询间隔从 5 变为 1,ReadBatchSize 变为 5000。这几乎立即将延迟从 13 小时变为零。但我看到它又回到了 13 …
我刚刚开始担任 DBA 的新工作。突然间,我们开始收到有关磁盘空间的警报。当我查看时,我发现 tempdb 日志文件在不断增长。有一个针对它的活跃事务正在运行。我检查了查询,它使用的是临时表。从45分钟开始,事情就毫无进展了。我尝试了很多事情,包括这些作为最后的手段。
use tempdb
GO
DBCC FREEPROCCACHE -- clean cache
DBCC DROPCLEANBUFFERS -- clean buffers
DBCC FREESYSTEMCACHE ('ALL') -- clean system cache
DBCC FREESESSIONCACHE -- clean session cache
Run Code Online (Sandbox Code Playgroud)
但这根本没有帮助。我还杀死了卡住的插入件。看来这并没有超出正常流程。最后我不得不紧急中断几分钟并重新启动 SQL 服务。关于我可能错过的内容有什么建议吗?
我们偶尔会收到以下电子邮件警报。
\n\n描述:用于打开连接的登录数据包在结构上无效;连接已关闭。请联系客户端库的供应商。
\n\n描述:网络数据包有效负载中指定的长度与读取的字节数不匹配;连接已关闭。请联系客户端库的供应商。
\n\n我尝试在网上搜索。但我还没有得到任何关于我应该如何解决这些警报问题的好的指示。在这种情况下,我应该联系应用程序团队来检查错误代码,还是联系安全团队来检查任何恶意活动?感谢您的指导。
\n