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 / 问题 / 257101
Accepted
René Nyffenegger
René Nyffenegger
Asked: 2020-01-11 07:17:54 +0800 CST2020-01-11 07:17:54 +0800 CST 2020-01-11 07:17:54 +0800 CST

为什么 SQL Server 代理作业会尝试创建过程

  • 772

我正在使用 SQL 代理来安排程序的执行。

第一次执行该过程时,它运行没有问题。作业(步骤)第二次执行时,它没有完成。

以下 SQL 语句的变体告诉我正在运行的语句是create procedure xyz...(xyz作业应该运行的过程的名称在哪里)。

select
   prc.loginame,
   prc.program_name,
   sql.text                                           sql_text
from
   sys.sysprocesses     prc                 cross apply
   sys.dm_exec_sql_text(prc.sql_handle) sql

我在我的程序(或其他方式)中没有执行任何 DDL,我想知道是什么导致作业尝试创建程序以及为什么作业挂起?

sql-server sql-server-agent
  • 1 1 个回答
  • 68 Views

1 个回答

  • Voted
  1. Best Answer
    Randi Vertongen
    2020-01-11T08:10:01+08:002020-01-11T08:10:01+08:00

    看到弹出的过程创建语句是这里的预期行为,它与工作代理本身无关。并且工作步骤不是重新创建过程,它只是运行它。

    例子

    如果我创建此过程:

    CREATE PROC dbo.Waitfordelay
    as
    WAITFOR DELAY '00:00:10';
    SELECT 5;
    

    然后在查询窗口中运行它:

    EXEC dbo.Waitfordelay;
    

    然后运行您的查询:

    loginame       program_name                                    sql_text
    Domain\User    Microsoft SQL Server Management Studio - Query  CREATE PROC dbo.Waitfordelay  as  WAITFOR DELAY '00:00:10';  SELECT 5  
    

    创建过程也出现了。

    如果您想了解有关过程调用的更多信息,可以使用类似dbcc inputbuffer

    dbcc inputbuffer(spid)
    

    对我来说,这会返回:

    EventType   Parameters  EventInfo
    Language Event  0   EXEC dbo.Waitfordelay  
    

    或者运行sp_whoisactive并将参数@get_outer_command设置为 1。

    exec [dbo].[sp_WhoIsActive]
            @get_outer_command = 1;
    enter code here
    

    示例结果:

    dd hh:mm:ss.mss session_id  sql_text                                 sql_command
    00 00:00:00.733 54          <?query --WAITFOR DELAY '00:00:10'; --?> <?query --EXEC dbo.Waitfordelay --?>
    

    运行 sp_whoisactive 还可以为您提供有关您的程序停留在哪一部分的更多信息。

    我在我的程序(或其他方式)中没有执行任何 DDL,我想知道是什么导致作业尝试创建程序以及为什么作业挂起?

    创建过程部分已清除,作业挂起的实际问题将是猜测,没有可重现的示例或更多信息。

    作业是否正在运行查询?参数嗅探在这里会成为问题吗?

    运行作业时有哪些等待类型?cpu时间/读取量是多少?

    当 jobstep 被卡住时,在查询下运行(你的适应)可能会提供更多信息:

    SELECT
    req.total_elapsed_time,
    req.cpu_time,
    req.reads,
    req.last_wait_type
    ,req.wait_type,
    req.wait_time,
    sql.text  sql_text
    FROM
    sys.dm_exec_requests     req                 
    cross apply sys.dm_exec_sql_text(req.sql_handle) sql;
    

    我们需要更多细节才能知道实际问题是什么。

    • 5

相关问题

  • 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