AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / dba / Perguntas / 276609
Accepted
Metaphor
Metaphor
Asked: 2020-10-07 04:53:29 +0800 CST2020-10-07 04:53:29 +0800 CST 2020-10-07 04:53:29 +0800 CST

sp_update_schedule diz que @schedule_id não existe

  • 772

Eu escrevi um script que lê agendas de trabalho msdb.dbo.sysschedulese executa sp_update_schedulepara alterar o active_start_timepara um determinado subconjunto de trabalhos. Em cada caso, sp_update_schedulefalha com a mensagem "O @schedule_id('xxx') especificado não existe". (ID da mensagem 14262, gravidade 16)

O schedule idin sysschedulesnão é o que está procurando? O que estou perdendo aqui?

sql-server sql-server-agent
  • 1 1 respostas
  • 660 Views

1 respostas

  • Voted
  1. Best Answer
    AMtwo
    2020-10-07T05:21:38+08:002020-10-07T05:21:38+08:00

    O @schedule_idparâmetro on sp_update_schedulese refere à schedule_idcoluna emmsdb.dbo.sysschedules

    sp_update_schedulecontém uma chamada para sp_verify_schedule_identifierspara validar o agendamento, e é a partir dessa etapa de verificação que você está recebendo esse erro (mensagem 14262).

    EXECUTE @retval = msdb.dbo.sp_verify_schedule_identifiers 
              @name_of_name_parameter = '@name',  
              @name_of_id_parameter   = '@schedule_id',  
              @schedule_name          = @name             OUTPUT,  
              @schedule_id            = @schedule_id      OUTPUT,  
              @owner_sid              = @cur_owner_sid    OUTPUT,  
              @orig_server_id         = NULL  
    

    Se você estiver passando um ID de agendamento e um nome de agendamento, pode haver um problema na string que você está passando para o nome, pois ela é usada para filtragem adicional no procedimento de verificação.

    Sugiro fazer alguns testes com chamadas diretamente para sp_verify_schedule_identifierspara que você possa simplificar sua solução de problemas e verifique se está passando parâmetros válidos para sp_update_schedule:

    DECLARE  
      @name_of_name_parameter   VARCHAR(60) ,--= '@schedule_name',
      @name_of_id_parameter     VARCHAR(60) = '@schedule_id',
      @schedule_name            sysname     ,--= 'syspolicy_purge_history_schedule',  
      @schedule_id              INT         = 8,  
      @owner_sid                VARBINARY(85),  
      @orig_server_id           INT,  
      @job_id_filter            UNIQUEIDENTIFIER    = NULL,
      @RetCode                  INT;
    
    EXEC @RetCode = sp_verify_schedule_identifiers 
      @name_of_name_parameter    = @name_of_name_parameter,
      @name_of_id_parameter      = @name_of_id_parameter,  
      @schedule_name             = @schedule_name,    
      @schedule_id               = @schedule_id,           
      @owner_sid                 = @owner_sid,             
      @orig_server_id            = @orig_server_id,
      @job_id_filter             = @job_id_filter;
    
    SELECT  
       RetCode              = @RetCode,
       NameOfNameParam      = @name_of_name_parameter, 
       NameOfIdParam        = @name_of_id_parameter,  
       ScheduleName         = @schedule_name,    
       ScheduleID           = @schedule_id,
       OwnerSid             = @owner_sid,
       OrigServerID         = @orig_server_id,
       JobIDFilter          = @job_id_filter;     
    

    As permissões também podem estar atrapalhando. Você precisaria, no mínimo, GRANT EXEC ON sp_update_schedule TO <your login>para fazer a chamada que está tentando fazer. EXECPara executar a etapa de solução de problemas que listei acima, você também precisaria receber sp_verify_schedule_identifiers-- embora você só precise disso se executá-lo diretamente. Normalmente, o encadeamento de propriedade permitiria que você precisasse apenas da permissão de nível superior e você teria implicitamente a permissão para fazer o que esse procedimento faz. Você também pode ser adicionado à SQLAgentUserRolefunção de segurança no msdb, que inclui outras permissões também - se estiver reagendando trabalhos, também poderá precisar/querer algumas dessas outras permissões para realizar seu trabalho, supondo que este seja um nível aceitável de acesso.

    • 2

relate perguntas

  • SQL Server - Como as páginas de dados são armazenadas ao usar um índice clusterizado

  • Preciso de índices separados para cada tipo de consulta ou um índice de várias colunas funcionará?

  • Quando devo usar uma restrição exclusiva em vez de um índice exclusivo?

  • Quais são as principais causas de deadlocks e podem ser evitadas?

  • Como determinar se um Índice é necessário ou necessário

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host

    • 12 respostas
  • Marko Smith

    Como fazer a saída do sqlplus aparecer em uma linha?

    • 3 respostas
  • Marko Smith

    Selecione qual tem data máxima ou data mais recente

    • 3 respostas
  • Marko Smith

    Como faço para listar todos os esquemas no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Listar todas as colunas de uma tabela especificada

    • 5 respostas
  • Marko Smith

    Como usar o sqlplus para se conectar a um banco de dados Oracle localizado em outro host sem modificar meu próprio tnsnames.ora

    • 4 respostas
  • Marko Smith

    Como você mysqldump tabela (s) específica (s)?

    • 4 respostas
  • Marko Smith

    Listar os privilégios do banco de dados usando o psql

    • 10 respostas
  • Marko Smith

    Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL?

    • 4 respostas
  • Marko Smith

    Como faço para listar todos os bancos de dados e tabelas usando o psql?

    • 7 respostas
  • Martin Hope
    Jin conectar ao servidor PostgreSQL: FATAL: nenhuma entrada pg_hba.conf para o host 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane Como faço para listar todos os esquemas no PostgreSQL? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh Por que o log de transações continua crescendo ou fica sem espaço? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland Listar todas as colunas de uma tabela especificada 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney O MySQL pode realizar consultas razoavelmente em bilhões de linhas? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx Como posso monitorar o andamento de uma importação de um arquivo .sql grande? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison Como você mysqldump tabela (s) específica (s)? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas Como posso cronometrar consultas SQL usando psql? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas Como inserir valores em uma tabela de uma consulta de seleção no PostgreSQL? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas Como faço para listar todos os bancos de dados e tabelas usando o psql? 2011-02-18 00:45:49 +0800 CST

Hot tag

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

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve