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 / 问题 / 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

在 SSRS 中执行订阅的权限

  • 772

我想在完成需要不同时间的 SSIS 包运行的一些 ETL 工作后执行 SSRS 订阅。我正在考虑使用这种方法,它基本上由 SSIS 调用与订阅的 SQL Server 代理作业调用以执行订阅相同的存储过程组成。

但是,我不确定管理执行订阅的权限的最佳方式是什么。例如,我不愿意将用户添加到 中,RsExecRole因为 Microsoft 在某些文档中不鼓励这样做,并且我不愿意授予对象级权限来执行该ReportServer.ado.AddEvent过程,因为它们可能会在任何迁移中被忽略。(编辑:我想我们可以通过执行代理作业而不是调用存储过程来解决这个问题。)

我还希望避免在其中一个 GUID 更改时执行订阅中断的代码出现问题。

SSRS 专业人员如何管理此类请求的权限?或者,是否有更简单的方法可以绕过这些问题?

ssrs permissions
  • 1 1 个回答
  • 1795 Views

1 个回答

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

    如果您使用一次性计划设置报告订阅并收集其计划 ID,则可以使用 sp_start_job 执行它。SSRS 使用 SQL Server 代理管理订阅,无需使用报告服务器事件即可实现这一点。执行用户,我想是一个服务帐户,只需要成为 SQLAgentOperatorRole 的一部分。请参阅:sp_start_job#permissions。
    您在问题的编辑中提到了这一点,但我想概述该过程,以防其他人需要特定的解决方案。


    设置时间表很容易。默认时间是您设置订阅计划的当天凌晨 2 点,并且可能已经过去,因此您可以离开它。 然后您可以通过查询报表服务器数据库表来收集您的计划 ID:订阅编辑页面,选择计划


    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)
    


    报表服务器数据库表


    您可以通过引用与您的计划 ID 匹配的作业名称来启动订阅:

    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.
    





    我还没有遇到计划 ID (GUID) 更改和中断执行的问题,但作为故障保险,您可以创建数据驱动订阅并明确声明唯一描述。

    数据驱动订阅第 1 步

    然后,您可以参考描述以动态收集您的计划 ID。

    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

相关问题

  • 如果我没有 mysql.user 的 SELECT 权限,是否可以找到 MySQL 变量的值?

  • 如何在不访问数据库“mysql”的情况下检索授予的权限?

  • 来自不同子网的 2 台主机的 1 个 MySQL 用户

  • 将 SSRS 数据库 ReportServer 的恢复模式更改为 SIMPLE 是否安全?

  • 你能在 MySQL 中“su -”吗?

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