2012-08-01 71 views
4

我已成功創建SQL Server 2005中的鏈接服務器到MySQL數據庫。我需要從VS調用/執行MySQL存儲過程(以刷新MySQL中的表數據),然後創建一個包含此數據的數據集以用於SSRS 2008中的報表。如何使用MySQL數據通過openquery和鏈接服務器在VS中爲SSRS 2008創建數據集

我可以從SSMS查詢窗口運行以下問題:

select * from openquery(myLinkedSrvrname,'call myMySQLprocname') 

但是我無法從VS中的查詢設計器窗口運行此語句來創建數據集。它會產生語法錯誤。任何人都可以爲上述openquery語句提出修復建議,或者知道如何從Reporting Services執行MySQL存儲過程來創建數據集?在執行查詢時

錯誤代碼

錯誤。錯誤[42000] [MySQL] [ODBC 5.1驅動程序] [mysqld-5.5.16]。 你的SQL語法有錯誤; 的對應於您的MySQL服務器版本正確的語法手冊,以接近使用的線(「myLinkedSrvrname,‘myMySQLprocname’)」 1

+0

錯誤的文字是什麼? – 2012-08-01 16:43:07

+0

執行查詢時發生錯誤。錯誤[42000] [MySQL] [ODBC 5.1驅動程序] [mysqld-5.5.16]。你的SQL語法有錯誤;與您的MySQL服務器版本相對應的手冊,以便在第1行附近使用正確的語法('myLinkedSrvrname,'myMySQLprocname')'。 – user1296335 2012-08-01 17:19:57

+1

聽起來就像您直接從SSRS連接到MySQL,而不是通過MS SQL - > MySQL鏈接。數據源是MS SQL服務器還是MySQL服務器?如果它是MySQL,你是否嘗試過將SSRS中的數據集類型改爲「存儲過程」並簡單地命名它,而不是使用任何openquery樣式的函數? – 2012-08-01 17:24:53

回答

1

您可以 1)建立直接從SSRS連接(需在SSRS服務器的dev的機器,以及對ODBC連接)http://dev.mysql.com/downloads/connector/odbc/

2)你可以用一個SQL Server存儲過程裏面這個OPENQUERY MySQL的通話。這將使您能夠將報告中的參數傳遞給SQL Server存儲過程,然後傳遞到MySQL存儲過程。但是它需要在SQL Server proc中使用動態SQL。

如果您選擇第一個選項,您可能會直接調用Stored Proc,但我只是通過不通過ODBC的Oracle連接來完成此操作,因此SSRS可能會將該選項設置爲灰色。

使用第二個選項,您可能會遇到兩跳身份驗證的進一步問題,具體取決於您正在運行的服務器操作系統。從SSMS調用MySQL proc只有一跳,所以不會出現這個問題。

編輯:顯然,這是可能的MySQL的ADO.NET連接器添加到SSRS: http://www.mazsoft.com/blog/post/2010/11/04/Using-SQL-Server-2008-Reporting-Services-(SSRS)-with-MySQL.aspx

聽起來很複雜,但如果你的MySQL有很多會比使用ODBC更好。

相關問題