5

こんにちは私は、レポートサーバー上のすべてのサブスクリプション、それらが実行されているレポート、それらが実行されている日時、および再発をリストするレポートを作成しようとしています。これまでのところ、レポートのリストとレポートのスケジュールを取得することができました。スケジュールテーブルの値と列の意味が理解できないようです。

誰かがこれらの列とその値を理解する方法に光を当てることができれば、私は本当に感謝しています。これは私がこれまでに持っているクエリです。

ReportServerを使用します。
行く

SELECT Users.UserName
、c.Name AS Report
、Subscriptions.Description
、Schedule。*
/ *、Schedule.RecurrenceType
、Schedule.MinutesInterval
、Schedule.DaysInterval
、Schedule.WeeksInterval
、Schedule.DaysOfWeek
、Schedule.DaysOfMonth
、Schedule。[Month]
、Schedule.MonthlyWeek * /
FROM [Catalog] AS c
INNER JOIN Subscriptions
ON c.ItemId = Subscriptions.Report_OId
INNER JOIN Users
ON Subscriptions.OwnerId = Users.UserId
INNER JOIN ReportSchedule
ON Subscriptions.SubScriptionId = ReportSchedule.SubScriptionId

ReportSchedule.ScheduleId=Schedule.ScheduleIdの内部 結合スケジュール

ありがとう、
クリス

4

2 に答える 2

1

ここに部分的な答えがあります...

DaysOfWeek は、次のバイナリ設定に関連しています。

日曜日はビット 0: 1 の値 月曜日はビット 1: 2 の値 火曜日はビット 2: 4 の値 水曜日はビット 3: 8 の値 木曜日はビット 4: 16 の値 金曜日はビット 5: 32 の値 土曜日はビット 6: 64 の値

したがって、レポートが毎週月曜日と水曜日に実行される場合、DaysOfWeek は 2 + 8、つまり 10 になります。

私は現在これを自分で取り組んでいるので、さらに発見したらこれを追加します.

于 2011-04-11T23:41:13.373 に答える
1

私が書いているレポートに出てきたので、これに対する解決策があります。

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
于 2012-01-31T08:42:32.580 に答える