有没有更理想的方法使用SQL Server 2005从另一个数据库查询数据?

时间:2010-08-11 06:28:08

标签: sql sql-server sql-server-2005

我有一个存储过程,它从同一服务器上的另一个数据库获取数据。

我不会硬编码使用哪个数据库,而是可以配置。如果没有动态sql,这可能吗?

到目前为止,我能想出的最佳解决方案是首先运行一个使用动态sql生成一堆视图的存储过程。然后,我可以从这些视图中选择数据,以避免为所有内容使用动态SQL。

示例:

DECLARE 
    @databaseName nvarchar(max),
    @sql          nvarchar(max)

-- Get this value from a configuration table
SET @databaseName = 'TestDatabase'

IF EXISTS(SELECT NULL FROM dbo.SysObjects WHERE [Name] = 'TestView')
    DROP VIEW dbo.TestView

SET @sql = 'CREATE VIEW dbo.TestView AS SELECT * FROM ' + @databaseName +'.dbo.TestTable'

EXEC (@sql)

--I can now select from TestView using regular query.
我猜这是错误的做法。有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用

OPENQUERYOPENROWSET