【问题标题】:SQL Server job (stored proc) traceSQL Server 作业(存储过程)跟踪
【发布时间】:2010-05-18 21:56:17
【问题描述】:

我需要您对跟踪问题的建议。

我们在清晨运行数据加载作业,并将数据从 Excel 文件加载到 SQL Server 2005 db。当作业在生产服务器上运行时,很多时候需要 2 到 3 个小时才能完成任务。我们可以深入到一个工作步骤,它需要 99% 的总时间才能完成。

虽然在暂存环境(恢复了相同的生产数据库)上运行作业步骤(存储过程)需要 9 到 10 分钟,但在生产服务器上作为作业的一部分在清晨运行时同样需要数小时。生产服务器总是在工作的那一步卡住。

我想在作业步骤中运行跟踪(在作业步骤的 while 循环中为每个用户运行大约 10 个存储的过程)并收集信息以找出问题。

在 SQL Server 2005 中有哪些可用的方法来实现相同的目标?我只想为这些 SP 运行跟踪,而不是在生产服务器上运行特定时间段,因为跟踪提供了大量信息,而且我(因为不是 DBA)很难分析那么多跟踪信息并弄清楚问题。所以我只想收集有关特定 SP 的信息。

让我知道你的建议。

感谢您的时间和帮助。

谢谢。

【问题讨论】:

    标签: sql-server trace sql-agent-job


    【解决方案1】:

    使用 SQL 事件探查器。它允许您跟踪大量事件,包括存储过程,甚至可以对跟踪应用过滤器。

    • 创建新跟踪
    • 仅选择存储过程 (RPC:Completed)
    • 检查“TextData”以获取要读取的列
    • 点击“列过滤器”按钮
    • 从左侧导航中选择“TextData”
    • 展开“Like”树形视图,然后输入您的过程名称
    • 勾选“排除不包含值的行”
    • 点击“确定”,然后点击“运行”

    【讨论】:

    • 我明天试试这个。谢谢。
    【解决方案2】:

    当时服务器上发生的其他事情很重要,因为它在其他服务器上更快但不是 prod。也许您正在运行统计或索引作业的日常备份或维护?

    【讨论】:

    • 只有数据加载作业在那个时间发生(30 个作业在一定的时间间隔内)。在此期间没有安排其他事情。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-01
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 2015-01-08
    相关资源
    最近更新 更多