首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MSSQL SERVER的维护过程中,我得到了错误:步骤失败

在MSSQL SERVER的维护过程中,我得到了错误:步骤失败
EN

Database Administration用户
提问于 2023-05-09 11:03:53
回答 1查看 85关注 0票数 0

在MSSQL中,每个星期六都会开始维护计划,在那里重新构建一些索引。在过去的一个月里,它总是在几个小时后失败的消息:步骤失败。

代码语言:javascript
复制
Executed as user: NT AUTHORITY\SYSTEM.

...PK_dbo.__MigrationHistory] ON [dbo].[__MigrationHistory] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, FILLFACTOR = 90) 
[SQLSTATE 01000] (Message 0)  ITEM 2 FROM 508 [SQLSTATE 01000] (Message 0)  ALTER INDEX [PK_dbo.__MigrationHistory] ON [dbo].[__MigrationHistory] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, FILLFACTOR = 90)
[SQLSTATE 01000] (Message 0)  ITEM 3 FROM 508 [SQLSTATE 01000] (Message 0)  ALTER INDEX [PK_dbo.ONEINDEX] ON [dbo].[TABLE1] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = OFF, FILLFACTOR = 90)
[SQLSTATE 01000] (Message 0)  ITEM 4 FROM 508 [SQLSTATE 01000] (Message 0)  ALTER INDEX [PK_dbo.INDEX] ON [dbo].[TABLE2] REBUILD PARTITION = ALL WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF,  
...  The step failed.

我如何进一步调查这个问题呢?我想在某个地方有一个暂停时间,但需要找出答案。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2023-05-09 12:04:13

你发的那条短信到底是从哪里来的?

对于主计划,您有三个诊断信息(错误信息等):

  1. 如果指定了这样的文件,则报告文件。这包含执行的命令和可能的错误消息。
  2. 电子邮件,如果你包括这样。
  3. 主要计划历史表。如果您检查主计划的历史记录,就会有一个GUI。在“对象资源管理器”、“管理维护计划”中,选择“维护计划”和“查看历史记录”。
  4. 探员的工作记录。这是不太容易消化,但可能是好的,如果上面的任何一个没有削减它。代理将lob步骤的历史限制为4000个字符,似乎您发布了代理作业输出,并且由于输出的长度,实际的错误消息从作业历史表中被截断。

下面是一个查询msdb数据库中代理作业历史表的示例查询:

代码语言:javascript
复制
SELECT j.name, jh.run_date, jh.run_time, jh.message, *
FROM msdb.dbo.sysjobhistory AS jh 
 INNER JOIN msdb.dbo.sysjobs AS j ON jh.job_id = j.job_id   
ORDER BY 
 j.name
,jh.run_date DESC
,jh.run_time
,jh.instance_id DESC

下面是维护计划历史表的示例查询:

代码语言:javascript
复制
SELECT * 
FROM msdb.dbo.sysmaintplan_log AS spl
INNER JOIN msdb.dbo.sysmaintplan_logdetail AS ld ON ld.task_detail_id=spl.task_detail_id

您发布的内容不包括错误信息,因此仅凭此我们就无能为力。查看我上面列出的其他来源,看看它们是否会有所帮助。

注意1:维护计划没有最好的声誉。使用其他东西是很常见的,比如Ola Hallengren的维护解决方案

注2:人们可能会争辩说,盲目地去碎片化索引不会得到任何东西(或更多)。下面是是我写的一篇关于这个主题的博文。

票数 2
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/326896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档