2010-10-06 43 views
5

Xin chào Tôi đang cố gắng tạo báo cáo liệt kê tất cả các đăng ký trên máy chủ báo cáo của chúng tôi, báo cáo họ đang truy cập, thời gian và ngày chúng được chạy và tính lặp lại. Cho đến nay tôi đã có thể nhận được một danh sách các báo cáo và lịch trình của các báo cáo. Tôi dường như không thể hiểu giá trị và cột trong bảng Lịch biểu có ý nghĩa gì.Ý nghĩa của bảng ReportServer.dbo.Schedule

Nếu ai đó có thể làm sáng tỏ cách hiểu các cột này và giá trị của chúng, tôi thực sự sẽ đánh giá cao nó. Đây là truy vấn tôi có cho đến nay.

USE ReportServer;
GO

CHỌN Users.UserName
, c.Name AS Báo cáo
, Subscriptions.Description
, Schedule. *
/*, Schedule.RecurrenceType
, Schedule.MinutesInterval
, Schedule. DaysInterval
, Schedule.WeeksInterval
, Schedule.DaysOfWeek
, Schedule.DaysOfMonth
, Schedule. [Tháng]
, Schedule.MonthlyWeek */
FROM [Catalogue] AS c
INNER JOIN Subscriptions
ON c.ItemId = Subscriptions.Report_OId
INNER JOIN Người dùng
ON Subscriptions.OwnerId = Users.UserId
INNER JOIN ReportSchedule
ON Subscriptions.SubScriptionId = ReportSchedule.SubScriptionId
INNER JOIN Schedule
ON ReportSchedule.ScheduleId = Schedule.Sch eduleId

Cảm ơn,
Chris

Trả lời

1

Đây là một câu trả lời một phần ...

DaysOfWeek liên quan đến các thiết lập nhị phân đó:

Chúa nhật là bit 0: Giá trị của 1 Thứ hai là chút 1: Giá trị của 2 Thứ ba là bit 2: Giá trị của 4 Thứ tư là bit 3: Giá trị 8 Thứ năm là bit 4: Giá trị 16 Thứ sáu là bit 5: Giá trị 32 Thứ bảy là bit 6: Giá trị của 64

Vì vậy, nếu báo cáo được chạy mỗi thứ Hai và thứ Tư, DaysOfWeek sẽ là 2 + 8, hoặc 10

Tôi hiện đang làm việc về vấn đề này bản thân mình vì vậy tôi sẽ bổ sung thêm với điều này khi tôi khám phá nhiều hơn.

1

Tôi có giải pháp cho điều này vì nó đã đưa ra báo cáo tôi đang viết.

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