我需要.NET中的reportviewer数据但最终报告涉及不同数据库和不同服务器中不同表之间的内部联接。我目前正在使用XML和动态SQL来集中我的代码查询。除了创建多个类似的存储过程或链接服务器之外,还可以使用哪些其他更好的方法(新服务器将随时添加并映射到其中一个服务器数据库的表中)
答案 0 :(得分:0)
在包含具有数据库信息的表的主服务器中,您可以使用具有以下功能之一的动态SQL:
OPENDATASOURCE(Transact-SQL)
在不使用链接服务器名称的情况下,将临时连接信息作为四部分对象名称的一部分提供。OPENDATASOURCE ( provider_name, init_string )
例:
以下示例在服务器London上创建与SQL Server的Payroll实例的临时连接,并查询AdventureWorks2008R2.HumanResources.Employee表。 (使用SQLNCLI和SQL Server将重定向到最新版本的SQL Server Native Client OLE DB提供程序。)SELECT * FROM OPENDATASOURCE('SQLNCLI', 'Data Source=London\Payroll;Integrated Security=SSPI') .AdventureWorks2008R2.HumanResources.Employee
或
OPENROWSET(Transact-SQL) 包括从OLE DB数据源访问远程数据所需的所有连接信息。此方法是访问链接服务器中表的替代方法,是使用OLE DB连接和访问远程数据的一次性临时方法。