आप अपने एसएसआरएस रिपोर्ट सर्वर के खिलाफ नीचे की तरह कुछ चला सकते हैं। आप एसक्यूएल को देख सकेंगे जो रिपोर्ट डेटासेट द्वारा निष्पादित किया जा रहा है।
;WITH XMLNAMESPACES (
DEFAULT 'http://schemas.microsoft.com/sqlserver/reporting/2005/01/reportdefinition',
'http://schemas.microsoft.com/SQLServer/reporting/reportdesigner' AS rd
),
ReportData AS
(
SELECT name ReportName
, x.value('CommandType[1]', 'VARCHAR(50)') AS CommandType
, x.value('CommandText[1]','VARCHAR(8000)') AS CommandText
, x.value('DataSourceName[1]','VARCHAR(50)') AS DataSource
FROM (SELECT name
, CAST(CAST(content AS VARBINARY(MAX)) AS XML) AS reportXML
FROM ReportServer.dbo.Catalog
WHERE content IS NOT NULL
AND type != 3) a
CROSS APPLY reportXML.nodes('/Report/DataSets/DataSet/Query') r(x)
)
SELECT *
FROM ReportData
धन्यवाद हारून। यदि उपयोगकर्ता एकाधिक छात्र आईडी दर्ज करने में सक्षम होना चाहते हैं तो आप बहु-मूल्य पैरामीटर को कैसे संभालेंगे या परीक्षण करेंगे? या उदाहरण के लिए आपके पास 'जॉन डो' नामक 4 अलग-अलग छात्र थे। – DavidStein
मैं कहना चाहता हूं कि एक साफ चाल थी, लेकिन मैं आमतौर पर यह सुनिश्चित करने के लिए कड़ी मेहनत करता हूं कि यह उन कुछ मामलों में काम करता है जिनकी मुझे आवश्यकता है। एसएसआरएस एक वास्तविक पैरामीटर के बजाय टेक्स्ट प्रतिस्थापन करता है, जहां आपके पास "जहां छात्रवृत्ति (@StudentIDs) है" यह वास्तव में गतिशील एसक्यूएल आउटपुट करेगा "जहां छात्रवृत्ति IN (65, 66, 67)"। मुझे लगता है कि आप अपने टेक्स्ट को sp_executesql के अंदर लपेट सकते हैं लेकिन फिर आप सिंटैक्स हाइलाइटिंग खो देते हैं। हमेशा के रूप में, कोई अच्छा समाधान नहीं है। –