2009-01-03 9 views
6

SQL सर्वर 2008 में SQL सर्वर रिपोर्टिंग सेवा rdl फ़ाइलों को स्क्रिप्ट करने के लिए PowerShell का उपयोग करना संभव है? यदि हां, तो क्या कोई ऐसा करने का कोड उदाहरण प्रदान कर सकता है? यह मेरे बिजनेस इंटेलिजेंस विभाग के बाहर व्यवसाय उपयोगकर्ताओं द्वारा बनाई गई आरडीएल फाइलों को स्क्रिप्ट करने के लिए किसी तृतीय पक्ष टूल का उपयोग करने के लिए एक उपयोगी प्रतिस्थापन होगा। शब्द "स्क्रिप्ट"क्या PowerShell SQL सर्वर रिपोर्टिंग सेवाओं RDL फ़ाइलों को स्क्रिप्ट कर सकता है?

के

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

मैंने आरएसएसएल फाइलों के रूप में रिपोर्ट निकालने के लिए आरएसएसक्रिप्टर टूल का उपयोग किया है, इसलिए मुझे पता है कि PowerShell के अलावा अन्य टूल का उपयोग करना संभव है। मैं विशेष रूप से जानना चाहता हूं कि PowerShell का उपयोग करके इसे करना संभव है और यदि ऐसा है, तो कोड करने के लिए कोड का नमूना प्राप्त करें।

पर क्यों मैं रिपोर्ट

के RDL VERSIONS उत्पन्न करना चाहते स्पष्टीकरण क्यों यह महत्वपूर्ण करने के लिए "स्क्रिप्ट बाहर" RDL फ़ाइलें करने के लिए रिपोर्ट है? मैं अपने बिजनेस इंटेलिजेंस विभाग के बाहर उपयोगकर्ताओं द्वारा बनाई गई सभी रिपोर्टों का ट्रैक रखने के लिए रात में एक बार अपनी स्रोत नियंत्रण प्रणाली में आरडीएल फाइलों की जांच करना चाहता हूं। मैं पहले से ही अपने विभाग द्वारा जेनरेट की गई सभी रिपोर्टों का ट्रैक रखता हूं क्योंकि हम बीआईडीएस में अपनी रिपोर्ट विकसित करते हैं, लेकिन मैं ऑनलाइन रिपोर्ट बिल्डर टूल में निर्मित रिपोर्टों पर वर्जनिंग इतिहास का ट्रैक नहीं रख सकता। पर

स्पष्टीकरण क्यों PowerShell न कि कुछ और के

  1. जिज्ञासा। मुझे एक समस्या है जिसे मैं जानता हूं कि दो विधियों में से एक (एपीआई या आरएसएस क्रिप्टर) द्वारा हल किया जा सकता है और मैं जानना चाहता हूं कि इसे किसी तीसरे तरीके से हल किया जा सकता है या नहीं।

  2. PowerShell के माध्यम से मेरी समस्या हल करने टूलबेट का विस्तार करने का अवसर। इस समस्या को हल करने के लिए PowerShell का उपयोग करके अन्य समस्याओं को हल करने के लिए PowerShell का उपयोग करने के तरीके को सीखने के लिए आधार प्रदान किया जा सकता है जिन्हें मैंने अभी तक हल करने का प्रयास नहीं किया है।

  3. पावरशेल मेरी टीम और मेरे लिए समझना आसान है। आम तौर पर, मेरी टीम के सदस्य और मैं PowerShell कोड को .NET कोड से अधिक आसानी से समझ सकता हूं। हालांकि मुझे पता है कि इस समस्या को एपीआई का उपयोग करके कुछ .NET कोड के साथ हल किया जा सकता है (इस प्रकार आरएसएसक्रिप्टर सभी के बाद काम करता है), मुझे लगता है कि हमारे लिए PowerShell स्क्रिप्ट को कोड और बनाए रखना आसान होगा। मुझे यह भी एहसास है कि पावरशेल स्क्रिप्ट शायद .NET कोड का उपयोग करेगी, लेकिन मुझे आशा है कि पावरशेल पहले से ही ऑब्जेक्ट्स जैसी रिपोर्टों का इलाज करने में सक्षम होगा, इसलिए मुझे फ़ाइलों को निकालने के लिए रिपोर्टिंग सर्विसेज एपीआई का उपयोग नहीं करना पड़ेगा।

  4. आरएसएसक्रिप्टर अभी तक 2008 का समर्थन नहीं करता है। अतीत में, मैंने रिपोर्ट को स्क्रिप्ट करने के लिए आरएसएसक्रिप्ट का उपयोग किया है। दुर्भाग्य से, यह अभी तक 2008 का समर्थन नहीं करता है। इसका मतलब है कि मुझे अभी एपीआई के खिलाफ कोड लिखना है क्योंकि यह एकमात्र तरीका है जिसे मैं जानता हूं कि फ़ाइलों को स्वचालित तरीके से कैसे निकाला जाए।

+0

आप कृपया स्पष्ट कर सके कि क्या "स्क्रिप्ट बाहर" का क्या मतलब है में फ़ाइलों? –

+0

प्रतिक्रिया के लिए धन्यवाद। मैंने इसे दूसरों को स्पष्ट बनाने के लिए प्रश्न अपडेट कर दिया है। –

उत्तर

4

एक छोटे से देर से, लेकिन यहाँ तुम जाओ

यह PowerShell स्क्रिप्ट: 1. जोड़ता अपनी रिपोर्ट सर्वर से 2. अपने रिपोर्ट सर्वर में एक ही फ़ोल्डर संरचना आप बनाता है 3. सभी डाउनलोड SSRS रिपोर्ट परिभाषा (RDL) उनके संबंधित फ़ोल्डरों

http://www.sqlmusings.com/2011/03/28/how-to-download-all-your-ssrs-report-definitions-rdl-files-using-powershell/

+0

धन्यवाद! यह वास्तव में अच्छा है। मैंने कैटलॉग से सामग्री को स्क्रिप्ट करके इस पर काम किया, लेकिन यह मेरी आवश्यकताओं को पूरी तरह से पूरा करता है। :) –

+0

डोनो क्यों, लेकिन यह एक 'विधि आमंत्रण विफल हुआ क्योंकि [SSRS.ReportingService2005.ReportExecutionService] में' ListChildren 'नामक विधि नहीं है। मेरे लिए। कोई समान विधि मौजूद नहीं है। – user2173353

0

.NET का समर्थन करने वाली कुछ भी ऐसा कर सकती है। API दस्तावेज़ों के कुछ लिंक के लिए this Stackoverflow posting देखें। प्रक्रिया वास्तव में काफी सरल है - एपीआई के पास .rdl फ़ाइल अपलोड या डाउनलोड करने का कॉल है।

रिपोर्ट मॉडल थोड़ा अधिक स्पष्ट रूप से हैं। यदि आप एक नया रिपोर्ट मॉडल अपलोड करते हैं तो आपको निर्भर रिपोर्ट (फिर से एक एपीआई कॉल) प्राप्त करनी होगी और डेटा स्रोत को फिर से कनेक्ट करना होगा। फिर, बहुत कठोर नहीं।

पावरहेल को यह ठीक करना चाहिए। मैंने आयरनपीथन और सी # के साथ यह सब किया है। Rs.exe नामक एक टूल भी है जो एक vb.net स्क्रिप्ट लेता है, ऊपर और पूंछ इसे कुछ शामिल करता है और संकलित करता है और दृश्यों के पीछे चलाता है।

+0

प्रतिक्रिया के लिए धन्यवाद। मैं विभिन्न कारणों से PowerShell विशिष्ट उत्तर की तलाश में हूं। यदि PowerShell पहले से ही किसी भी तरह से ऑब्जेक्ट्स के रूप में रिपोर्ट का इलाज नहीं करता है, तो मैं शायद रिपोर्ट निर्यात करने के लिए API का उपयोग करूंगा। –

+0

पावरहेल किसी भी .net एपीआई का उपयोग कर सकते हैं। एपीआई वही है चाहे इसका उपयोग पावरहेल या किसी अन्य .net भाषा से किया जाता है। – ConcernedOfTunbridgeWells

4

पावरशेल इस के लिए कोई मूल, पावरशेल-एस्क्यू कार्यक्षमता प्रदान नहीं करता है, नहीं। आप इसे PowerShell में कर सकते हैं (जैसा कि पिछले उत्तर में बताया गया है) क्योंकि PowerShell अंतर्निहित फ्रेमवर्क कक्षाओं तक पहुंच सकता है। जैसा कि आपने पिछले उत्तर में अपनी टिप्पणी में उल्लेख किया है, यह सी # या वीबी में एपीआई का उपयोग करने से अलग नहीं है।

SQL सर्वर टीम ने अभी तक PowerShell-विशिष्ट सामग्री के रास्ते में बहुत कुछ प्रदान नहीं किया है। वे मुख्य रूप से .NET और T-SQL पर "स्क्रिप्टिंग भाषाओं" के रूप में निर्भर हैं।

+0

एक निराशाजनक और मैं माइक्रोसॉफ्ट कनेक्ट साइट पर एक वृद्धि अनुरोध जमा कर दूंगा यदि यह अनुरोध किसी अन्य व्यक्ति द्वारा पहले ही सबमिट नहीं किया गया है। –

+0

एमएस के लिए यह एक कठिन कॉल है। एसक्यूएल टीम को पहले ही 2-3 एपीआई का समर्थन करना है; मुझे यकीन है कि पीएसएच सिर्फ एक और की तरह दिखता है। मुझे उम्मीद है कि समुदाय मौजूदा एपीआई के आसपास कुछ cmdlets लपेट सकता है। वह अच्छा होगा। –

2

मैंने अभी ReportServer.dbo.Catalog में सामग्री कॉलम को एहसास किया है जिसमें एक छवि प्रारूप में परिभाषा है। मैं इसे पठनीय पाठ में बदलने के लिए निम्नलिखित कोड लिखा है:

SELECT CONVERT(VARCHAR(MAX), CONVERT(NVARCHAR(MAX), CONVERT(XML, CONVERT(VARBINARY(MAX), Content)))) 
FROM [ReportServer].[dbo].[Catalog] 
WHERE Type = 2 

ऊपर कोड के साथ, मैं अब एक फ्लैट फ़ाइल के लिए परिणाम लेखन स्वचालित कर सकते हैं और फिर मेरी संस्करण नियंत्रण प्रणाली में फ़ाइल आयात।

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