2012-08-01 72 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更好。

相关问题