跨不同服务器数据库连接表
当从位于不同服务器上的不同数据库中的多个表检索数据时,有几种方法可以有效地连接这些表。
1. 使用服务器链接
通过 sp_addlinkedserver
命令创建服务器链接以建立数据库之间的连接。像往常一样通过查询访问,在链接服务器名称前加上数据库名称作为前缀,如示例所示:
<code class="language-sql">-- 来自 DB1 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN [DB2].[MyDatabaseOnDB2].[dbo].[MyOtherTable] tab2 ON tab1.ID = tab2.ID</code>
2. 使用 OPENQUERY
或者,考虑使用 OPENQUERY
执行远程 SQL 语句并从其他服务器检索数据。此方法可优化带宽并在远程服务器上优化查询。您可以将数据缓存到临时表或内存表中以便稍后连接,如以下示例所示:
<code class="language-sql">-- 从其他数据库服务器获取数据 SELECT * INTO #myTempTable FROM OPENQUERY([DB2], 'SELECT * FROM [MyDatabaseOnDB2].[dbo].[MyOtherTable]') -- 现在我可以连接我的临时表以查看数据 SELECT * FROM [MyDatabaseOnDB1].[dbo].[MyTable] tab1 INNER JOIN #myTempTable tab2 ON tab1.ID = tab2.ID</code>
注意事项
服务器链接和 OPENQUERY
之间的选择取决于具体的用例和性能要求。服务器链接提供永久连接,而 OPENQUERY
允许临时数据检索。对于需要过滤的场景,OPENQUERY
可能更高效。请参考文档以了解更多示例和场景。
以上是如何高效地跨不同数据库服务器连接表?的详细内容。更多信息请关注PHP中文网其他相关文章!