使用来自不同服务器的数据连接 2 个#temp 表 SQL 服务器
Joining 2 #temp tables with data from different servers SQL Server
我需要连接位于不同服务器上的一些表中的数据。我没有服务器的管理员权限,所以我无法创建链接服务器,这是每次有人询问时的即时响应。我想我会尝试创建几个临时表然后加入它们,但是虽然我能够成功创建#temp 表并使用一些 WHERE 子句来减少表中的数据量,但我可以'不知道如何加入两者。我正在使用 SQL Server Management Studio,似乎给定的 SQL 查询无法同时 "see" 两个临时表。临时表是否仍存储在从中收集数据的服务器上?我的印象是它们都存储在某个临时数据库中,我可以一次访问所有这些数据库。
我先做了
SELECT ID
,A
,B
,C
INTO ##Temp1
FROM [DB1].[dbo].[Table1]
WHERE ID IS NOT NULL
然后在另一个 window 我做了
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'.
这是我第一次尝试这样的事情,我觉得我在这里遗漏了一些非常简单的东西,但我在所有搜索中都找不到任何东西。 :/
此处至少有五个选项,'normal' 用户无法使用所有选项:
- 创建链接服务器(您不需要系统管理员权限,您只需要 'ALTER ANY LINKED SERVER' 权限)。但是这个服务器应该只创建一次,所以你的数据库管理员可以为你做。
或
- 将数据导出到平面文件并导入目标服务器(可以自动执行)
或
- 创建一个空数据库,复制数据,进行备份,在目标服务器上恢复备份 - 也可以自动化(这里你需要一定的权限来创建一个数据库,make backups/restore,但是系统管理员权限没有必要)
或
- 复制
或
- SSIS
...
如果可以在两台服务器上创建两个相同的table,则可以使用CMS(中央管理服务器)在两台服务器上同时运行查询。合并后的结果可能会插入到某些 table 中,然后进行处理。
我需要连接位于不同服务器上的一些表中的数据。我没有服务器的管理员权限,所以我无法创建链接服务器,这是每次有人询问时的即时响应。我想我会尝试创建几个临时表然后加入它们,但是虽然我能够成功创建#temp 表并使用一些 WHERE 子句来减少表中的数据量,但我可以'不知道如何加入两者。我正在使用 SQL Server Management Studio,似乎给定的 SQL 查询无法同时 "see" 两个临时表。临时表是否仍存储在从中收集数据的服务器上?我的印象是它们都存储在某个临时数据库中,我可以一次访问所有这些数据库。
我先做了
SELECT ID
,A
,B
,C
INTO ##Temp1
FROM [DB1].[dbo].[Table1]
WHERE ID IS NOT NULL
然后在另一个 window 我做了
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'.
这是我第一次尝试这样的事情,我觉得我在这里遗漏了一些非常简单的东西,但我在所有搜索中都找不到任何东西。 :/
此处至少有五个选项,'normal' 用户无法使用所有选项:
- 创建链接服务器(您不需要系统管理员权限,您只需要 'ALTER ANY LINKED SERVER' 权限)。但是这个服务器应该只创建一次,所以你的数据库管理员可以为你做。
或
- 将数据导出到平面文件并导入目标服务器(可以自动执行)
或
- 创建一个空数据库,复制数据,进行备份,在目标服务器上恢复备份 - 也可以自动化(这里你需要一定的权限来创建一个数据库,make backups/restore,但是系统管理员权限没有必要)
或
- 复制
或
- SSIS
...
如果可以在两台服务器上创建两个相同的table,则可以使用CMS(中央管理服务器)在两台服务器上同时运行查询。合并后的结果可能会插入到某些 table 中,然后进行处理。