AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 129300
Accepted
Mark Freeman
Mark Freeman
Asked: 2016-02-16 06:38:57 +0800 CST2016-02-16 06:38:57 +0800 CST 2016-02-16 06:38:57 +0800 CST

为什么 sp_update_alert 失败?

  • 772

在 SQL Server 2012 中,我有一个 Job Agent Alert 设置如下:

EXEC msdb.dbo.sp_add_alert @name=N'Deadlock Alert', 
        @message_id=0, 
        @severity=0, 
        @enabled=1, 
        @delay_between_responses=0, 
        @include_event_description_in=1, 
        @category_name=N'[Uncategorized]', 
        @performance_condition=N'Locks|Number of Deadlocks/sec|_Total|>|0', 
        @job_id=N'00000000-0000-0000-0000-000000000000'

我有一个计划在每个工作日下午 5:30 运行的作业执行此步骤:

EXEC msdb.dbo.sp_update_alert @name = N`enter code here`'Deadlock Alert', @enabled = 0;

我有另一个在每个工作日的上午 8:00 重新启用警报。在许多情况下,这两项工作(和警报)都可以正常工作数月。但是周五下午 5:30 的工作在一个实例中失败,并显示以下消息:

指定的 object_name ('Locks') 不存在。[SQLSTATE 42000](错误 14262)指定的对象名称(“数据库”)不存在。[SQLSTATE 42000](错误 14262)。该步骤失败。

如果我直接为该警报执行 sp_update_alert 命令(启用设置为 0 或 1)。我收到此错误:

消息 14262,级别 16,状态 1,过程 sp_verify_performance_condition,第 50 行指定的对象名称(“锁”)不存在。

我尝试使用 SSMS UI 禁用警报并得到:

指定的 object_name ('Locks') 不存在。(Microsoft SQL 服务器,错误:14262)

这对作业在所有其他实例中仍在正常运行,没有错误。是什么导致 sp_update_alert 失败,这只是在一个实例中,而且是从星期五开始的?

[添加:]

启用和禁用作业还启用和禁用另一个警报,该警报查看 SQLServer:Databases|Data File(s) Size (KB)|tempdb 计数器,这些命令抛出错误“指定的对象名称(‘数据库’)不存在”。同样,仅在这一次。相同的作业和警报在同一台服务器上的另一个实例上仍然可以正常工作。

sql-server-2012 sql-server-agent
  • 1 1 个回答
  • 1062 Views

1 个回答

  • Voted
  1. Best Answer
    Aaron Bertrand
    2016-02-16T08:48:11+08:002016-02-16T08:48:11+08:00

    验证 SQL Server 代理帐户是否具有查询性能计数器 DMV 的必要权限(听起来您的代理帐户最近已更改)。根据文档:

    需要对服务器的 VIEW SERVER STATE 权限。

    所以:

    GRANT VIEW SERVER STATE TO [SQL Agent account];
    

    还要确保作为该登录名(或使用 的任何登录名VIEW SERVER STATE,例如sa),您可以看到从 DMV 返回的结果。我听说过很多情况,在 SQL Server 中性能计数器只是空着,这可以追溯到 SQL Server 2000 with sysperfinfo. 一些消息来源建议将以下内容作为命令行的解决方案(然后重新启动):

    lodctr "<path to binn>\binn\sqlctr.ini"
    

    当然,Microsoft 关闭了大部分这些报告,因为无法重现(这并不让我感到惊讶,因为我没有直接看到这种症状,并且不知道如何重现该问题)。

    • 缺少 sys.dm_os_performance_counters
    • sys.dm_os_performance_counters 仅显示与 XTP 相关的数据(修复应用了 CU)

    在这些线程中还有一些建议,欢迎您尝试(这些已经存在很长时间了,我不打算在这里尝试总结和重复这些信息):

    • sql server性能计数器丢失怎么办
    • 如何恢复 SQL Server 2008 R2 性能计数器?
    • sys.dm_os_performance_counters 为空
    • 清空 Sysperfinfo 表和空白 sql 性能监视器计数器
    • 1

相关问题

  • SQL Server AlwaysOn 故障转移透明度

  • SQL Server 代理错误

  • 为什么 Denali 序列应该比标识列表现更好?

  • SQL Server 不应该支持范围吗?

  • 什么是 SQL Server“德纳利”?什么是新的?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve