4

我已经成功地在 SQL Server 2005 中创建了一个链接服务器到 MySQL 数据库。我需要从 VS 调用/执行 MySQL 存储过程(以刷新 MySQL 中的表数据),然后使用此数据创建一个数据集,用于 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 服务器版本相对应的手册,以便在第 1 行的 ('myLinkedSrvrname, 'myMySQLprocname')' 附近使用正确的语法

4

1 回答 1

1

您可以 1) 直接从 SSRS 创建连接(需要在 SSRS 服务器和您的开发机器上建立 ODBC 连接)http://dev.mysql.com/downloads/connector/odbc/

或者

2) 您可以将此 openquery MySQL 调用包装在 SQL Server 存储过程中。这将使您能够将报表中的参数传递到 SQL Server 存储过程,然后再传递到 MySQL 存储过程。然而,它需要在 SQL Server 过程中使用动态 SQL。

如果您使用第一个选项,您可能可以直接调用存储过程,但我只使用不通过 ODBC 的 Oracle 连接来完成此操作,因此 SSRS 可能会使该选项变灰。

使用第二个选项,您可能会遇到更多的 2-hop 身份验证问题,具体取决于您运行的服务器操作系统。从 SSMS 调用 MySQL proc 只有 1 跳,所以不会出现这个问题。

编辑:显然可以将 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 更好。

于 2012-10-04T08:00:21.700 回答