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 / 96445
Accepted
James Lupolt
James Lupolt
Asked: 2015-03-28 04:21:39 +0800 CST2015-03-28 04:21:39 +0800 CST 2015-03-28 04:21:39 +0800 CST

Permissões para executar assinatura no SSRS

  • 772

Eu gostaria de executar uma assinatura SSRS após algum trabalho ETL executado por um pacote SSIS que leva um tempo variável para ser concluído. Estou pensando em usar este método , que consiste basicamente em SSIS chamando o mesmo procedimento armazenado que os trabalhos do SQL Server Agent para chamadas de assinaturas para executar uma assinatura.

No entanto, não tenho certeza de qual seria a melhor maneira de gerenciar permissões para executar a assinatura. Por exemplo, estou relutante em adicionar usuários ao RsExecRoleporque isso é desencorajado pela Microsoft em alguns documentos, e estou relutante em conceder permissões de nível de objeto para executar o ReportServer.ado.AddEventprocedimento porque eles provavelmente serão ignorados em qualquer migração. (Editar: suponho que poderíamos contornar isso fazendo com que algo execute o trabalho do agente em vez de chamar o procedimento armazenado.)

Também espero evitar problemas com o código que executa a quebra de assinatura quando um dos GUIDs é alterado.

Como os profissionais do SSRS gerenciam as permissões para esse tipo de solicitação? Como alternativa, existe um método mais simples que contorne esses problemas?

ssrs permissions
  • 1 1 respostas
  • 1795 Views

1 respostas

  • Voted
  1. Best Answer
    solutionist
    2016-12-23T16:13:53+08:002016-12-23T16:13:53+08:00

    Se você configurar uma assinatura de relatório com um agendamento único e coletar sua ID de agendamento, poderá executá-lo usando sp_start_job. O SSRS gerencia as assinaturas com o SQL Server Agent, o que torna isso possível sem a necessidade de usar o Reporting Server Events. O usuário em execução, imagino uma conta de serviço, precisará apenas fazer parte do SQLAgentOperatorRole. Consulte: sp_start_job#permissions .
    Você faz alusão a isso em uma edição em sua pergunta, mas gostaria de descrever o processo caso alguém precise de uma solução específica.


    Configurar o cronograma é fácil. O horário padrão é 2h do dia em que você configurou o agendamento da assinatura e provavelmente já passou, então você pode deixá-lo. Em seguida, você pode coletar sua ID de agendamento consultando as tabelas do banco de dados do Report Server:Página de edição de assinatura, selecione agendamento


    select C.Name ReportName,
        S.Name ScheduleName,
        SU.Description SubscriptionName,
        S.ScheduleID
    from ssrs.Catalog C
    join ssrs.ReportSchedule RS
        on C.itemID = RS.ReportID
    join ssrs.Schedule S
        on RS.scheduleID = S.ScheduleID
    join ssrs.Subscriptions SU
        on RS.SubscriptionID = SU.SubscriptionID
    where C.name = 'Test Report'
    
    (1 row(s) affected)
    


    Tabelas de banco de dados do servidor de relatórios


    Você pode iniciar a assinatura referenciando o nome do trabalho correspondente ao seu ID de agendamento:

    Trabalho SQL


    /*Run Subscription*/
    exec msdb.dbo.sp_start_job '8037A345-9F7C-45B0-99FB-B110996BD521'
    
    (1 row(s) affected)
    Job '8037A345-9F7C-45B0-99FB-B110996BD521' started successfully.
    





    Ainda não tive um problema com a alteração de um Schedule ID (GUID) e interrupção da execução, mas como um sistema de segurança, você pode criar uma assinatura baseada em dados e declarar explicitamente uma descrição exclusiva.

    Etapa 1 da assinatura baseada em dados

    Em seguida, você pode fazer referência à descrição para coletar seu ID de agendamento dinamicamente.

    declare @ScheduleID uniqueidentifier
    
    select @ScheduleID = S.ScheduleID
    from ssrs.Catalog C
    join ssrs.ReportSchedule RS
        on C.itemID = RS.ReportID
    join ssrs.Schedule S
        on RS.scheduleid = S.ScheduleID
    join ssrs.Subscriptions SU
        on RS.SubscriptionID = SU.SubscriptionID
    where C.name = 'Test Report'
        and SU.Description = 'My Test Report Subscription'
    
    exec msdb.dbo.sp_start_job @ScheduleID
    
    (1 row(s) affected)
    Job '8037A345-9F7C-45B0-99FB-B110996BD521' started successfully.
    
    • 1

relate perguntas

  • É possível encontrar os valores das variáveis ​​do MySQL se eu não tiver privilégios SELECT no mysql.user?

  • Como recuperar privilégios concedidos sem acesso ao banco de dados “mysql”?

  • Um usuário MySQL de 2 hosts não na mesma sub-rede

  • É seguro alterar o modelo de recuperação do banco de dados SSRS ReportServer para SIMPLE?

  • Você pode "su -" no MySQL?

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