2013-09-23 7 views
10

मैंने एसएसआरएस सदस्यता को ट्रैक रखने में मेरी सहायता के लिए एक एसएसआरएस रिपोर्ट लिखी है। मैंने एक स्क्रिप्ट repurposed है जो ईमेल प्राप्तकर्ताओं को देखने के लिए Reportserver.dbo.Subscriptions.LastStatus का उपयोग करेगा, हालांकि, यह केवल LastStatus के पहले 520 वर्णों को सूचीबद्ध करेगा। चूंकि हमारी कुछ वितरण सूचियां काफी बड़ी हैं, मेरे नाम की कुछ नामों को नहीं मिला है (भले ही वे वितरण का हिस्सा हैं)।एसएसआरएस सदस्यता - सभी रिपोर्ट प्राप्तकर्ताओं को कैसे देखें

SELECT Reportname = c.Name 
    ,FileLocation = c.Path 
    ,SubscriptionDesc=su.Description 
    ,Subscriptiontype=su.EventType 
    ,su.LastStatus 
    ,su.LastRunTime 
    ,Schedulename=sch.Name 
    ,ScheduleType = sch.EventType 
    ,ScheduleFrequency = 
    CASE sch.RecurrenceType 
    WHEN 1 THEN 'Once' 
    WHEN 2 THEN 'Hourly' 
    WHEN 4 THEN 'Daily/Weekly' 
    WHEN 5 THEN 'Monthly' 
    END 
    ,su.Parameters 
    FROM Reportserver.dbo.Subscriptions su 
    JOIN Reportserver.dbo.Catalog c 
    ON su.Report_OID = c.ItemID 
    JOIN Reportserver.dbo.ReportSchedule rsc 
    ON rsc.ReportID = c.ItemID 
    AND rsc.SubscriptionID = su.SubscriptionID 
    JOIN Reportserver.dbo.Schedule Sch 
    ON rsc.ScheduleID = sch.ScheduleID 
WHERE LastStatus like @Email 
ORDER BY LastRunTime DESC 

है कि मैं ऑनलाइन डेटा प्रदर्शित करने के LastStatus स्तंभ का उपयोग करता पाया है किसी भी कोड: नीचे स्क्रिप्ट है कि मैं का उपयोग कर रहा है। अगर किसी के पास रिपोर्ट वितरण सूची के सभी सदस्यों को सूचीबद्ध करने के लिए मेरे लिए कोई और तरीका है, तो मैं इसकी सराहना करता हूं।

उत्तर

26

नीचे सदस्यता एसक्यूएल के पूर्ण पाठ के लिए क्वेरी करने के लिए एसक्यूएल है। मुझे लगता है कि यह बेहद लंबी पता सूचियों के साथ काम करेगा, लेकिन मेरे पास अभी तक लंबी पता सूचियों के साथ एक परीक्षण सर्वर नहीं है।

यदि उत्पादन में इसका उपयोग किया जाता है, तो शायद मैं WITH (NOLOCK) के कुछ में फेंक दूंगा और समस्याओं पर एमएस से समर्थन की उम्मीद नहीं करता।

; 
    WITH subscriptionXmL 
      AS (
       SELECT 
       SubscriptionID , 
       OwnerID , 
       Report_OID , 
       Locale , 
       InactiveFlags , 
       ExtensionSettings , 
       CONVERT(XML, ExtensionSettings) AS ExtensionSettingsXML , 
       ModifiedByID , 
       ModifiedDate , 
       Description , 
       LastStatus , 
       EventType , 
       MatchData , 
       LastRunTime , 
       Parameters , 
       DeliveryExtension , 
       Version 
       FROM 
       ReportServer.dbo.Subscriptions 
      ), 
       -- Get the settings as pairs 
     SettingsCTE 
      AS (
       SELECT 
       SubscriptionID , 
       ExtensionSettings , 
    -- include other fields if you need them. 
       ISNULL(Settings.value('(./*:Name/text())[1]', 'nvarchar(1024)'), 
         'Value') AS SettingName , 
       Settings.value('(./*:Value/text())[1]', 'nvarchar(max)') AS SettingValue 
       FROM 
       subscriptionXmL 
       CROSS APPLY subscriptionXmL.ExtensionSettingsXML.nodes('//*:ParameterValue') Queries (Settings) 
      ) 
    SELECT 
     * 
    FROM 
     SettingsCTE 
    WHERE 
     settingName IN ('TO', 'CC', 'BCC') 
+0

वही था जो मैं ढूंढ रहा था! टीओ और सीसी दोनों को खोजने की क्षमता सही है, क्योंकि मैं अगले रिपोर्ट के उस हिस्से को ठीक करने की उम्मीद कर रहा था। बहुत अच्छी लिपि! आपकी मदद के लिए धन्यवाद जेमी – Wendy

+0

यह पूरी तरह से भयानक है। मैं एक ई-मेल पते को बड़े पैमाने पर कैसे अपडेट करूं? उपयोग का मामला एक पूर्व कर्मचारी रिपोर्ट में अपनी कंपनी का ईमेल पता डालता है। –

संबंधित मुद्दे