1

切换服务器后如何让#tempTable 留在内存中。这可能吗?

Select * 
into #tempTable
from dbo.table

我在服务器 1 中有要在服务器 2 中比较的数据,但我只有对服务器 2 的只读访问权限(所以我不能只将我的数据移动到那里),并且服务器 2 中的表太大而无法移动到服务器1. 这就是为什么我想知道在连接到新服务器后如何在内存中保存临时表。

任何帮助将不胜感激,谢谢。

4

2 回答 2

1

您编写的内容是可能的,但它只是在该表所在的服务器上创建一个临时表。

你可能想要:

select *
into #Server2Table
from server2.database.dbo.table

然后,您可以#Server2Table在复制它的同一连接上的其他查询中使用(例如 SSMS 中的同一窗口或同一作业步骤或同一存储过程)。如果您需要将它放在更永久的位置,请使用全局临时表(以 开头##)或“真实”表。

这需要能够链接服务器,使用类似的东西:

sp_addlinkedserver server2

您将在 server1 上运行它。也许您的 DBA 需要设置它。

我发现将跨服务器表加载到临时表中时查询通常运行得更快。这不是因为临时表存储在内存中。这是因为有更多关于本地服务器上的表的信息可供 SQL 优化器利用。

于 2013-02-22T18:30:47.843 回答
0

您可以从查询中导出数据并将其导入第一台服务器上的数据库中。您可以使用 SQL Server 导入/导出向导。有点复杂,但如果这种情况经常发生,您可以使用 SSIS 自动执行此操作,甚至只需勾选“保存此包”框。一旦你在你的第一台服务器中获得了数据,你就可以对它做任何你喜欢的事情。

于 2013-02-22T18:30:50.180 回答