如何在SQL服务器中执行跨服务器插入?
How to perform cross server insert in SQL Server?
我在 2 个服务器中有 3 个表。
- Table服务器A中的A
- Table 服务器 B 中的 B
- Table 服务器 B 中的 C
服务器 A 和服务器 B 已链接。
Table答:
Fruit Quantity Total Price
Apple 2 4
Banana 4 12
Orange 6 24
Table乙:
Fruit Unit Price
Apple 2
Banana 3
Orange 4
Table C:
Fruit Quantity Unit Price Total Price
Apple 2 2 4
Banana 4 3 12
Orange 6 4 24
我需要从 Table A 到 Table C 获取数据。
我还需要参考 Table B 以获得 Table C 所需的单价。
我所做的是:
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select
Fruit, Quantity, '', Total Price
from table A
但是我还是无法得到水果的单价。
我可以知道我可以使用哪种查询来获取单价并将其放入上面的 select 查询中吗?
要完成答案,您可以这样做:
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select a.Fruit, a.Quantity, b.[unit price], a.[Total Price]
from table A
join [Server B].[DatabaseName].[SchemaName].[Table B] B on A.fruit = B.fruit
说明
您将 table a
加入 table b
,这样您就可以从 b
获取单价,从 a
获取其余数据。可用于将数据插入 c
此查询可能适合您。
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select
A.[Fruit], A.[Quantity], B.[Unit Price], A.[Total Price]
from A join B
ON A.[Fruit] = B.[Fruit]
with temp as
(
select
A.Fruit, A.Quantity, B.[Unit Price], A.[Total Price]
from [Server A].[DatabaseName].[SchemaName].[Table A]
inner join [Server B].[DatabaseName].[SchemaName].[Table B] on A.Fruit=B.Fruit
)
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select A.Fruit, A.Quantity, B.[UnitPrice], A.[Total Price] from temp
---Or---
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select A.Fruit, A.Quantity, B.[Unit Price], A.[Total Price]
from [Server A].[DatabaseName].[SchemaName].[Table A]
inner join [Server B].[DatabaseName].[SchemaName].[Table B] on A.Fruit=B.Fruit
当然,您可以使用 Linked Server
sp_addlinkedserver
我想你已经设置好了
我在 2 个服务器中有 3 个表。
- Table服务器A中的A
- Table 服务器 B 中的 B
- Table 服务器 B 中的 C
服务器 A 和服务器 B 已链接。
Table答:
Fruit Quantity Total Price
Apple 2 4
Banana 4 12
Orange 6 24
Table乙:
Fruit Unit Price
Apple 2
Banana 3
Orange 4
Table C:
Fruit Quantity Unit Price Total Price
Apple 2 2 4
Banana 4 3 12
Orange 6 4 24
我需要从 Table A 到 Table C 获取数据。 我还需要参考 Table B 以获得 Table C 所需的单价。 我所做的是:
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select
Fruit, Quantity, '', Total Price
from table A
但是我还是无法得到水果的单价。 我可以知道我可以使用哪种查询来获取单价并将其放入上面的 select 查询中吗?
要完成答案,您可以这样做:
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select a.Fruit, a.Quantity, b.[unit price], a.[Total Price]
from table A
join [Server B].[DatabaseName].[SchemaName].[Table B] B on A.fruit = B.fruit
说明
您将 table a
加入 table b
,这样您就可以从 b
获取单价,从 a
获取其余数据。可用于将数据插入 c
此查询可能适合您。
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select
A.[Fruit], A.[Quantity], B.[Unit Price], A.[Total Price]
from A join B
ON A.[Fruit] = B.[Fruit]
with temp as
(
select
A.Fruit, A.Quantity, B.[Unit Price], A.[Total Price]
from [Server A].[DatabaseName].[SchemaName].[Table A]
inner join [Server B].[DatabaseName].[SchemaName].[Table B] on A.Fruit=B.Fruit
)
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select A.Fruit, A.Quantity, B.[UnitPrice], A.[Total Price] from temp
---Or---
insert into [Server B].[DatabaseName].[SchemaName].[Table C]
select A.Fruit, A.Quantity, B.[Unit Price], A.[Total Price]
from [Server A].[DatabaseName].[SchemaName].[Table A]
inner join [Server B].[DatabaseName].[SchemaName].[Table B] on A.Fruit=B.Fruit
当然,您可以使用 Linked Server
sp_addlinkedserver
我想你已经设置好了