首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >理解ReportServer.dbo.Schedule表

理解ReportServer.dbo.Schedule表
EN

Stack Overflow用户
提问于 2010-10-07 04:25:27
回答 2查看 4.3K关注 0票数 5

您好,我正在尝试制作一个报表,其中列出了我们的报表服务器上的所有订阅,它们所在的报表,它们运行的时间和日期,以及当前的情况。到目前为止,我已经能够获得报告的列表和报告的时间表。我似乎无法理解明细表中的值和列的含义。

如果有人能阐明如何理解这些专栏及其价值,我将不胜感激。这就是我到目前为止得到的查询。

使用ReportServer;

选择Users.UserName

代码语言:javascript
复制
 , c.Name AS Report
代码语言:javascript
复制
 , Subscriptions.Description
代码语言:javascript
复制
     , Schedule.\*

/*,Schedule.RecurrenceType

代码语言:javascript
复制
 , Schedule.MinutesInterval
代码语言:javascript
复制
 , Schedule.DaysInterval
代码语言:javascript
复制
 , Schedule.WeeksInterval
代码语言:javascript
复制
 , Schedule.DaysOfWeek
代码语言:javascript
复制
 , Schedule.DaysOfMonth
代码语言:javascript
复制
 , Schedule.[Month]
代码语言:javascript
复制
 , Schedule.MonthlyWeek \*/

从Catalog作为c

代码语言:javascript
复制
 INNER JOIN Subscriptions
代码语言:javascript
复制
     ON c.ItemId = Subscriptions.Report\_OId
代码语言:javascript
复制
 INNER JOIN Users
代码语言:javascript
复制
     ON Subscriptions.OwnerId = Users.UserId
代码语言:javascript
复制
 INNER JOIN ReportSchedule
代码语言:javascript
复制
     ON Subscriptions.SubScriptionId = ReportSchedule.SubScriptionId
代码语言:javascript
复制
 INNER JOIN Schedule
代码语言:javascript
复制
     ON ReportSchedule.ScheduleId = Schedule.ScheduleId  

谢谢,

克里斯

EN

回答 2

Stack Overflow用户

发布于 2011-04-12 07:41:13

以下是部分答案..。

DaysOfWeek与二进制设置相关,其中:

星期日是位0:值1星期一是位1:值2星期二是位2:值4星期三是位3:值8星期四是位4:值16星期五是位5:值32星期六是位6:值64

因此,如果每周一和周三运行报告,则DaysOfWeek将为2+ 8或10。

我自己目前正在做这件事,所以当我发现更多的时候,我会增加这一点。

票数 1
EN

Stack Overflow用户

发布于 2012-01-31 16:42:33

我有一个解决方案,因为它出现在我正在撰写的报告中。

代码语言:javascript
复制
create function [dbo].[calendarlist](@Value_in as int,@Type as int) returns varchar(200)
as
begin

/*
This code is to work out either the day of the week or the name of a month when given a value
Wrriten by S Manson.
31/01/2012
*/

declare @strings as varchar(200)
declare @Count int

if @Type = 2    --Months
    Begin
        set @Count =12
    end
else if @Type = 1   --Days of Week
    Begin
        Set @Count = 7
    End
else    --Days of Month
    Begin
        Set @Count = 31
    End

set @strings = ''

while @Count<>0
begin
    if @Value_in>=(select power(2,@count-1))
        begin
            set @Value_in = @Value_in - (select power(2,@count-1))
            If @Type=2
                Begin
                    set @strings = (SELECT DATENAME(mm, DATEADD(month, @count-1, CAST('2008-01-01' AS datetime)))) + ',' + @strings
                end
            else if @Type = 1
                begin
                    set @strings = (SELECT DATENAME(dw, DATEADD(day, @count-1, CAST('2012-01-01' AS datetime)))) + ',' + @strings
                end
            else
                begin
                    set @strings = convert(varchar(2),@Count) + ', ' + @strings
                end

        end
    set @count = @count-1
end
if right(@strings,1)=','
    set @strings = left(@strings,len(@strings)-1)

return @strings

end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3876572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档