10个解决方案
64 votes
您需要使用OPENQUERY来创建服务器链接。 有关用法,请参阅参考文档。 建立服务器链接后,您将正常构建查询,只需在数据库名称前加上其他服务器。即:
-- FROM DB1
SELECT *
FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2
ON tab1.ID = tab2.ID
建立链接后,您还可以使用OPENQUERY在远程服务器上执行SQL语句,并仅将数据传输回给您。 这可以更快一点,它将让远程服务器优化您的查询。 如果您将数据缓存在上面示例中的DB1上的临时(或内存)表中,那么您将能够像加入标准表一样查询它。 例如:
-- Fetch data from the other database server
SELECT *
INTO #myTempTable
FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]')
-- Now I can join my temp table to see the data
SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1
INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID
查看OPENQUERY的文档以查看更多示例。 上面的例子非常人为。 我肯定会使用此特定示例中的第一个方法,但如果您使用查询过滤掉某些数据&