2009-01-03 58 views
6

是否可以使用PowerShell在SQL Server 2008中腳本化SQL Server Reporting Services rdl文件?如果是這樣,有人可以提供這樣做的代碼示例嗎?這將是使用第三方工具來編寫商業智能部門之外的商業用戶創建的RDL文件的有用替代品。PowerShell可以編寫SQL Server Reporting Services RDL文件嗎?

術語「SCRIPT OUT」

澄清所謂「劇本出來」,我的意思是我想自動生成服務器上的每個報告的基本RDL文件。例如,當您在BIDS中編寫報告時,您正在生成一個RDL文件。將文件部署到服務器時,該文件以某種方式導入到SQL Server ReportServer數據庫中,並且不再是單獨的物理RDL文件。我想以RDL文件格式從服務器中提取所有報告。

我使用RSScripter工具提取報告,RDL文件,所以我知道這是可能使用PowerShell的比其他工具。我特別想知道是否可以使用PowerShell來實現,如果可以,請獲取代碼示例來執行此操作。

澄清爲什麼我要生成報表

的RDL VERSIONS爲什麼是重要的「腳本去」到RDL文件報告?我想每晚在RDL文件上籤入我的源代碼控制系統,以跟蹤由我的商業智能部門之外的用戶創建的所有報告。自從我們在BIDS中開發我們的報告以來,我已經記錄了由我的部門生成的所有報告,但我無法跟蹤在線報告生成器工具中生成的報告的版本記錄。

澄清爲什麼POWERSHELL而不是其他

  1. 好奇心。我有一個問題,我知道可以通過兩種方法之一(API或RSSCripter)解決,我想知道它是否可以通過第三種方法解決。

  2. 通過PowerShell擴展我的問題解決工具包的機會。使用PowerShell解決此問題可能爲學習如何使用PowerShell解決尚未嘗試解決的其他問題奠定基礎。

  3. PowerShell更容易理解我的團隊和我。一般來說,我的團隊成員和我可以比.NET代碼更容易理解PowerShell代碼。儘管我知道這個問題可以通過一些使用API​​的.NET代碼來解決(這就是RSScripter的工作方式),但我覺得我們可以更容易地編寫和維護一個PowerShell腳本。我也意識到一個PowerShell腳本可能會使用.NET代碼,但我希望PowerShell已經能夠以某種方式將對象作爲對象處理,所以我不必使用Reporting Services API來提取文件。

  4. RSScripter目前還不支持2008。過去,我使用RSScript編寫報告。不幸的是,它似乎還不支持2008年。這意味着我現在必須針對API編寫代碼,因爲這是我介紹的唯一方式,即知道如何以自動化無人蔘與的方式提取文件。

+0

能否請你澄清什麼是「腳本去」是什麼意思? – 2009-01-03 18:19:07

+0

感謝您的反饋。我已經更新了這個問題,以便讓其他人更清楚。 – 2009-01-03 18:42:42

回答

0

任何支持.Net的都可以做到這一點。請參閱this Stackoverflow posting以獲取API文檔的一些鏈接。這個過程實際上相當簡單 - API有一個上傳或下載.rdl文件的調用。

報告模型有點煩躁。如果您上傳新的報告模型,則必須獲取相關報告(再次調用API)並重新連接數據源。再一次,不是非常費勁。

Powershell應該做的很好。我已經用IronPython和C#做了各種各樣的工作。還有一個名爲rs.exe的工具需要一個vb.net腳本,用一些包含它的頂部和尾部並在後臺編譯和運行它。

+0

感謝您的反饋。我正在尋找一個PowerShell的具體答案,各種原因。如果PowerShell不以某種方式將報表視爲對象,那麼我可能會使用API​​導出報表。 – 2009-01-03 18:44:11

+0

Powershell可以使用任何.net API。無論是使用Powershell還是任何其他.net語言,API都是相同的。 – ConcernedOfTunbridgeWells 2009-01-03 20:05:07

4

PowerShell不會爲此提供任何本地PowerShell-esque功能,不會。您可以在PowerShell中執行此操作(如前面的答案中所述),只是因爲PowerShell可以訪問底層的Framework類。正如您在對上一個答案的評論中指出的那樣,它與在C#或VB中使用API​​沒有什麼不同。

SQL Server團隊還沒有提供太多PowerShell特定的東西。他們主要依靠.NET和T-SQL作爲「腳本語言」。

2

我剛剛意識到ReportServer.dbo.Catalog中的Content列包含圖片格式的定義。我寫了下面的代碼將其轉換爲可讀文本:

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

與上面的代碼,我現在可以自動將結果寫入到一個平面文件,然後將該文件導入到我的版本控制系統。

相關問題