连接来自不同服务器的数据的2 #临时表



我需要连接位于不同服务器上的一些表的数据。我没有在服务器上的管理权限,所以我不能创建链接的服务器,这是即时响应,每次有人问这个。我想我会尝试创建几个临时表,然后加入这些表,但是,虽然我能够成功地创建#temp表,并使用一些WHERE子句来减少表中的数据量,这是一个奖励,我不知道如何连接两者。我正在使用SQL Server管理工作室,它似乎是一个给定的SQL查询是无法"看到"两个临时表一次。临时表是否仍然存储在收集数据的服务器上?在我的印象中,它们都存储在某个临时数据库中,我可以一次访问所有这些数据库。

首先我做了

SELECT ID 
      ,A
      ,B
      ,C
INTO ##Temp1 
FROM [DB1].[dbo].[Table1]
WHERE ID IS NOT NULL

然后在另一个窗口我做了

SELECT A_ID
    ,Q
    ,R
INTO ##Temp2  
FROM [DB2].[dbo].[Table2] 

但在我试图将两者结合的时候

SELECT A_ID 
    ,Q 
    ,R 
    ,A
    ,B
    ,C   
FROM ##Temp2 AS TableA
LEFT JOIN ##Temp1 as TableB
ON TableA.A_ID = TableB.ID

我得到了错误

Invalid object name '##Temp1'.

这是我第一次尝试这样的东西,我觉得我在这里错过了一些很简单的东西,但我无法在我所有的搜索中找到任何东西。:/

这里至少有五个选项,并且它们都不是'普通'用户可用的:

  1. 创建一个链接服务器(你不需要sysadmin权限,你只需要'ALTER ANY linked server '权限)但是这个服务器应该只创建一次,所以你的数据库管理员可以为你做。

  • 将数据导出为平面文件并在目标服务器上导入(可以自动执行)
  • 创建一个空的数据库,复制数据,做备份,在目标服务器上恢复备份-也可以自动化(这里你需要一定的权限来创建一个数据库,做备份/恢复,但系统管理员权限是不必要的)
  • 复制
  • SSIS
  • 如果您可以在两台服务器上创建两个相同的表,那么您可以使用CMS (Central Management Server)在两台服务器上同时运行查询。合并后的结果可以插入到某个表中,然后再进行处理。

    相关内容

    • 没有找到相关文章

    最新更新