2010-11-01 6 views
10

मैं अपनी एसएसआरएस रिपोर्टों से संस्करण जानकारी प्राप्त करने का एक तरीका ढूंढ रहा हूं। मेरे पास कई वातावरण हैं और इन वातावरणों पर कौन सा रिपोर्ट संस्करण तैनात किया गया है इसकी तुलना करने में सक्षम होना चाहते हैं। एसएसआईएस में यह बहुत आसान है क्योंकि प्रत्येक एसएसआईएस पैकेज को एक नया संस्करण मिलता है जब इसे संशोधित और सुरक्षित किया जाता है। क्या रिपोर्ट के साथ कुछ समान है?एसएसआरएस रिपोर्ट्स संस्करण

उत्तर

9

दुर्भाग्यवश वर्तमान में आरडीएल फाइलों के लिए एक डीएल असेंबली संस्करण के समान कोई अंतर्निहित कार्यक्षमता नहीं है।

किसी प्रकार की संस्करण जानकारी प्राप्त करने का एकमात्र तरीका सी # या वीबी.Net के माध्यम से सर्वर पर आरडीएल फ़ाइल की अंतिम संशोधित तिथि से पूछताछ करना है। आप ReportingServices webservice का उपयोग कर ऐसा कर सकते हैं।

आप एक कस्टम फ़ंक्शन भी कार्यान्वित कर सकते हैं जो प्रत्येक डेटाबेस को आरडीएल फ़ाइल में संशोधित होने पर वर्तमान स्थिति में आपके डेटाबेस में कुछ फ़ील्ड अपडेट करता है।

सभी फ़ाइल संशोधित जानकारी के साथ समस्या: आप अभी भी नहीं जानते कि कौन सा संस्करण सर्वर पर है, आपको पता है कि यह कब अपलोड/संशोधित किया गया था।

कुछ और जानकारी के लिए निम्न पृष्ठ देखें - दुर्भाग्य से कोई समाधान नहीं:

+1

आपकी प्रतिक्रिया के लिए बहुत बहुत धन्यवाद, मुझे चिंता थी कि यह ऐसा ही हो सकता है। कभी-कभी समझना मुश्किल होता है कि एमएसएफटी अपने उत्पादों को डिजाइन करने में इतनी अपूर्ण क्यों है, लेकिन यह जीवन है। :) – nojetlag

+2

मुझे शुरू नहीं करें - एसएसआरएस एकमात्र मस्तिष्क नहीं है जो सर्वोत्तम प्रथाओं के साथ असंगत है ;-) –

4

अपनी रिपोर्टों में, मैं संस्करण नामक एक चर बना सकते हैं और यह एक स्ट्रिंग डेटा बनाने टाइप करें (और इसे चर सूची के शीर्ष पर ले जाएं)। हर बार जब मैं एक रिपोर्ट बदलता हूं, तो मैं Semantic Versioning पर आधारित संस्करण चर अद्यतन करता हूं।

फिर, मैं अपने रिपोर्ट सर्वर से पूछताछ कर सकता हूं और ExecutionLog तालिका के पैरामीटर फ़ील्ड को देख सकता हूं और मैं देख सकता हूं कि कौन सा संस्करण चलाया गया था। तकनीकी रूप से मैं इन सभी को एक एसएसआईएस नौकरी में ख्याल रखता हूं जो किसी अन्य तालिका में लिखता है, लेकिन यह यहां के दायरे से बाहर है।

+1

हमारी रिपोर्ट में मैंने एक संस्करण चर भी बनाया है, लेकिन हमने इसका मान $ Revsion $ पर सेट किया है। सीवीएस या एसवीएन (और मुझे लगता है कि जीआईटी) प्रत्येक बार एक नया संशोधन किए जाने पर स्वचालित रूप से इस मूल्य को अपडेट कर देगा। आरडीएल के संस्करण को मैन्युअल रूप से बनाए रखने के बिना यह एक त्वरित और आसान तरीका है। –

+1

@ कोरिस, मुझे पता है कि एसवीएन ऑटो प्रोप का उपयोग कैसे करें ..लेकिन आपने वास्तव में इसे एक चर में कैसे पढ़ा और सेट किया? – Nayak

0

अभी भी कोई अच्छा समाधान नहीं लगता है। यदि आप एक डिफ़ॉल्ट मान के साथ एक छुपा पैरामीटर "संस्करण" बनाते हैं तो आप .rdl फ़ाइल में इसके मान को संशोधित करने के लिए बिल्ड टास्क का उपयोग कर सकते हैं, उदा। स्रोत नियंत्रण परिवर्तन संख्या के साथ संशोधन भाग। अफसोस की बात है कि आपको इस बिल्ड कार्य को रखने के लिए एक और दृश्य स्टूडियो प्रोजेक्ट की आवश्यकता हो सकती है क्योंकि रिपोर्टिंग प्रोजेक्ट प्रकार सक्षम नहीं है।

आप इनलाइन कोड या एक असेंबली भी बना सकते हैं जो कुछ लुकअप कर सकता है।

सस्ते करने से इनकी विकल्प: अंतिम संशोधित तिथि रिपोर्ट डेटाबेस फार्म का उपयोग करें:

Select 
    Name, 
    Path, 
    CreationDate, 
    ModifiedDate, 
    ModUser.UserName AS ModUser, 
    CAST(catalog.parameter as xml).value(/Parameters[1]/Parameter[Name="Version"][1]/Values[1]/Value[1]','NVARCHAR(20)') as Version 
    FROM Reportserver.dbo.Catalog 
    INNER JOIN ReportServer.dbo.Users ModUser on Moduser.UserID = ModifiedByID 
    WHERE Type = 2 

और एक संशोधन संख्या ... हालांकि विभिन्न सर्वर उदाहरणों भर में संस्करणों के साथ doesen't मदद करने के लिए तिथि परिवर्तित।

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